2012-10-26 30 views
-1

我有一個包含下面的JavaScript爲什麼window.opener無法在Internet Explore 9中工作?

<script type="text/javascript" language="javascript"> 
    window.opener.myfunction(); 
    window.close(); 
</script> 

這適用於Chrome,火狐文件的JSP文件。它也適用於在VMWare虛擬機中運行的Internet Explorer 8和9。但是,用戶報告了一個bug,結果是window.opener不起作用,我的功能沒有被調用。用戶也使用IE9,但在本地Windows機器上運行。

我的問題是,爲什麼它在我的IE9上運行,但不是他的?任何IE設置都可以導致這種情況?

非常感謝

+0

會發生什麼情況?是'window.opener' null? –

+0

選中此鏈接。 [http://stackoverflow.com/questions/7648231/javascript-issue-in-ie-with-window-opener] [1] – prageeth

+0

聽起來像是javascript沒有啓用,或者窗口在不同的安全區域。如果只是一個部署問題,即所有在本地運行而不是在互聯網上運行的安全區域都是有意義的。 –

回答

0

這裏有一個例子... http://jsfiddle.net/KjBj3/6/

顯然您的彈出頁面將在它的標記,但你得到的漂移......

var win = window.open("", "win","width=200,height=100"); 
win.document.write('<a href="#" id="close" onclick="window.close();">This is myWindow!</a>'); 
win.focus(); 
win.opener.document.write('<p>This is the source window!</p>'); 
0

我沒有了解window.opener,如果您可以修改開啓者代碼,則不需要。考慮下面的代碼複製功能:

w2 = window.open(...); 
w2.opener = window; 

如果揭幕戰是你的,讓它自己分配的揭幕戰到任何打開的窗口。如果您擔心併發性,如果尚未設置開啓器,則可以在打開的窗口中休眠:

<script type="text/javascript" language="javascript"> 
    (function f(){ 
     if(window.opener){ 
     window.opener.myfunction(); 
     window.close(); 
     }else{ 
     setTimeout(f,1); //1ms should be enough. If not, wait again. 
     } 
    })() 
</script> 
+0

我不知道IE,但是我知道在chrome中,子窗口和它們的'opener'在同一個線程上運行,所以併發性在那裏並不是問題,也可能不在這裏。 –

相關問題