【问题标题】:Why window.opener not working in Internet explore 9?为什么 window.opener 在 Internet Explorer 9 中不起作用?
【发布时间】:2012-10-26 12:28:28
【问题描述】:

我有一个包含以下 javascript 的 JSP 文件

<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 设置都会导致这种情况吗?

非常感谢

【问题讨论】:

  • 会发生什么? window.opener 是否为空?
  • 查看此链接。 [stackoverflow.com/questions/7648231/…][1]
  • 听起来像是没有启用javascript,或者窗口位于不同的安全区域。如果这只是一个部署问题,即所有运行在本地与在 Internet 上运行的所有内容,那么不同的安全区域将是有意义的。
  • 您可以从开瓶器手动分配window.opener

标签: javascript internet-explorer


【解决方案1】:

我不知道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>

【讨论】:

  • 我不了解 IE,但我知道在 chrome 中子窗口与它们的“开启器”在同一线程上运行,因此并发在那里不是问题,也可能不在这里。
【解决方案2】:

这是一个例子...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>');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多