【问题标题】:window.opener is undefined on Internet Explorer在 Internet Explorer 上未定义 window.opener
【发布时间】:2014-05-09 10:15:21
【问题描述】:

当我尝试从弹出窗口访问父窗口的元素时,我得到 window.opener 未定义。

var opener = window.opener;
if(opener) 
{
    console.log("opener element found");
    var elem = opener.$('.my-parent-element');
    if (elem) {
        console.log("parent element found");
        elem.show(); 
    }
}

这里opener 是未定义的。难道我做错了什么?

我试过parent.window.opener/window.top/window.top.document.body等,但也无济于事。它在其他浏览器中运行良好。

我看到了Window Opener Alternative 的问题,但我无法立即更改使用showModalDialog 打开我的弹出窗口。可能,这将是最后的选择。

【问题讨论】:

  • 开瓶器是同一个主机吗?是否已重定向?
  • 那我觉得跟IE安全区有关:stackoverflow.com/questions/15822885/…
  • 这听起来是我的问题。但似乎没有解决办法?是吗?
  • 不幸的是,像许多 IE 问题一样。

标签: javascript jquery


【解决方案1】:

我遇到了同样的问题,这是由于 Internet Explorer 安全选项, 特别是因为我的弹出窗口将转到外部网站(Internet 区域),而父级是内部页面(Intranet 区域)。 “保护模式”仅针对“Internet”激活。 我为“本地 Intranet”激活了它,现在它可以工作了。

要在 IE 中找到此选项:

  • 转到 Internet 选项
  • 安全标签
  • 点击“Internet”或“Local Intranet”图标
  • 选中或取消选中“启用保护模式”选项
  • 重启IE

【讨论】:

    【解决方案2】:

    如果使用的浏览器是 IE,您可以使用 showModalDialog 函数并向其传递参数。只需将 window 对象作为参数传递。

    之后,您可以使用dialogArguments 从模态窗口访问参数。

    更多细节可以在这里的文档中找到:http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx

    检索示例:

    window.showModalDialog(theURL, window);
    
    //in the modal dialog you can use this to retrieve the window.
    var openerWindow = window.dialogArguments;
    

    【讨论】:

    • 抱歉迟到了。正如我在使用showModalDialog 实施之前所说的那样,这将是最后的选择(所以花了一些时间)。我改变了我的代码并跑了。一切都好。谢谢。
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多