在Internet Explorer上未定义window.opener
当我尝试从弹出窗口访问我的父窗口的元素时,我得到window.opener
为undefined。
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,您可以使用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;
我遇到了同样的问题,这是由于Internet Explorer安全选项,特别是因为我的弹出窗口是外部网站(Internet区域),而父级是内部页面(Intranet区域)。 “保护模式”仅针对“Internet”激活。 我为“本地内联网”激活了它,现在它可以工作了。
要在IE中找到此选项:
- 转到Internet选项
- 安全选项卡
- 单击“Internet”或“本地Intranet”图标
- 选中或取消选中“启用保护模式”选项
- 重启IE