为什么window.opener无法在Internet Explorer 9中工作?

时间:2012-10-26 12:28:28

标签: javascript internet-explorer

我有一个JSP文件,其中包含以下javascript

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

这适用于Chrome,Firefox上的文件。它也适用于在VMWare虚拟机中运行的Internet Explorer 8和9。但是,用户报告的错误结果是window.opener不起作用且myfunction未被调用。用户也使用IE9,但在本机Windows机器上运行。

我的问题是,为什么它适用于我的IE9而不是他的?任何IE设置都可能导致此问题吗?

非常感谢

2 个答案:

答案 0 :(得分: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>');

答案 1 :(得分: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>