xzw 2 år sedan
förälder
incheckning
f742c95fce
3 ändrade filer med 16 tillägg och 6 borttagningar
  1. 10 3
      src/custom/utils/Common.js
  2. 1 1
      src/custom/viewer/ViewerNew.js
  3. 5 2
      src/navigation/InputHandlerNew.js

+ 10 - 3
src/custom/utils/Common.js

@@ -429,10 +429,17 @@ var Common = {
         
     getRootWindow(){//获取包含Potree的根window
         let win = window
-        while(win.parent!=win && win.parent.Potree){
-            win = win.parent
+        try{
+            while(win.parent!=win && win.parent.Potree){
+                win = win.parent
+            }
+            if(window != win)return win 
+        }catch(e){
+            //console.log(e) //可能跨域,从而win.parent.Potree报错 
+            console.log('getRootWindow 跨域')
+            return  
         }
-        if(window != win)return win
+        
     },
     
     

+ 1 - 1
src/custom/viewer/ViewerNew.js

@@ -88,7 +88,7 @@ let shelterHistory = []
 Potree.isIframeChild = window.parent!=window  //子页面
 if(Potree.isIframeChild){ 
     let rootWin = Common.getRootWindow() 
-    rootWin && rootWin.viewer.dispatchEvent({type:'createIframe', window}) //给祖先页面发送信息
+    rootWin && rootWin.viewer.dispatchEvent({type:'createIframe', window}) //给祖先页面发送信息,得不到可能跨域了或无viewer
 } 
 /* window.addEventListener('focus',()=>{
     console.log('focus',window.winIndex)

+ 5 - 2
src/navigation/InputHandlerNew.js

@@ -63,8 +63,11 @@ export class InputHandler extends THREE.EventDispatcher {
 		this.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false);
 		window.addEventListener('mouseup', this.onMouseUp.bind(this), false);
         if(Potree.isIframeChild){//子页面的话在父页面也要加侦听(应该不会有多层吧?否则要一直加到最外层)
-            window.parent.addEventListener('mouseup', this.onMouseUp.bind(this), false);
-        }
+            //window.parent.addEventListener('mouseup', this.onMouseUp.bind(this), false); //可能跨域
+            //window.parent.postMessage('listenMouseup', '*');
+            window.addEventListener('mouseout', this.onMouseUp.bind(this), false);  //cancel drag
+        } 
+        
         
 		this.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false);
         //add