SanHQin 17 hours ago
parent
commit
332896a66e

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.ada672be3d54a71617af4f89c04a7a12.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.becc9317549795ada446.js></script><script type=text/javascript src=./static/js/app.c24f84e3eac3c3c9b782.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.5748ccc104a4eb07af4d83be244cbea4.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.becc9317549795ada446.js></script><script type=text/javascript src=./static/js/app.a01b64be0d06813dc10b.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.5748ccc104a4eb07af4d83be244cbea4.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.5748ccc104a4eb07af4d83be244cbea4.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.a01b64be0d06813dc10b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.a01b64be0d06813dc10b.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 41 - 8
src/components/pptEasyClass/index.vue

@@ -350,14 +350,47 @@ export default {
       // this.observeDialogUrl = `https://observe.cocorobo.cn/#/newClassroom?userid=${this.userid}&oid=${this.oid}&org=${this.org}&pptid=${pptid}`;
       // this.showObserveDialog = true;
 
-      let _pageWindow = window.open(`https://observe.cocorobo.cn/#/newClassroom?userid=${this.userid}&oid=${this.oid}&org=${this.org}&pptid=${pptid}`,'_blank')
-      _pageWindow.onload = function(){
-        console.log("页面已打开完毕")
-        _pageWindow.postMessage({
-          type: 'fileData',
-          file: file
-        }, '*');
-      }
+      const url = `https://observe.cocorobo.cn/#/newClassroom?userid=${this.userid}&oid=${this.oid}&org=${this.org}&pptid=${pptid}`;
+      const _pageWindow = window.open(url, '_blank');
+      // 优化:等待新窗口加载完成后再传递消息,避免部分浏览器下页面未初始化无法接收消息的问题
+      const sendFileData = () => {
+        if (!_pageWindow) {
+          console.error("新窗口未成功打开!");
+          return;
+        }
+        _pageWindow.postMessage(
+          {
+            type: 'fileData',
+            file,
+          },
+          '*'
+        );
+      };
+
+      // 轮询检测新窗口加载完成(避免跨域无法onload的情况)
+      let checkCount = 0;
+      const checkLoadedInterval = setInterval(() => {
+        if (_pageWindow.closed) {
+          clearInterval(checkLoadedInterval);
+          return;
+        }
+        try {
+          // 有的情况下,如果页面已加载会有document.body等属性
+          if (_pageWindow.document && _pageWindow.document.readyState === 'complete') {
+            clearInterval(checkLoadedInterval);
+            sendFileData();
+          }
+        } catch (err) {
+          // 跨域时会报错,直接尝试发送
+          clearInterval(checkLoadedInterval);
+          sendFileData();
+        }
+        // 最多检测2秒(20次),防止死循环
+        if (++checkCount > 20) {
+          clearInterval(checkLoadedInterval);
+          sendFileData();
+        }
+      }, 100);
       // setTimeout(()=>{
         // window.focus()
         // _pageWindow.focus()

Some files were not shown because too many files changed in this diff