我正在打开一个模态弹窗。然后,我使用 window.opener
访问父窗口的文本框和其他属性。在火狐浏览器中,它运行良好,但在 IE8 中不行。它会报错 'window.opener is null'。如何在两个浏览器中访问父窗口属性。
我正在打开一个模态弹窗。然后,我使用 window.opener
访问父窗口的文本框和其他属性。在火狐浏览器中,它运行良好,但在 IE8 中不行。它会报错 'window.opener is null'。如何在两个浏览器中访问父窗口属性。
解决该问题的方法有两种: 注意: 如果使用 "showModalDialog","window.opener" 不被IE支持。
1) 使用 "window.open" 代替 "window.showModalDialog"
2) 如果你想要使用 "window.showModalDialog",请执行以下操作:
<script language="javascript" type="text/javascript">
function YourFunction()
{
var opener = null;
if (window.dialogArguments) // Internet Explorer supports window.dialogArguments
{
opener = window.dialogArguments;
}
else // Firefox, Safari, Google Chrome and Opera supports window.opener
{
if (window.opener)
{
opener = window.opener;
}
}
// write you code and refer "opener"
window.close();
}
</script>
您可以向showModalDialog函数传递参数。只需将window对象作为参数传递即可。
window.showModalDialog(theURL, window);
你可以使用dialogArguments从模态窗口中访问参数。请参见:http://msdn.microsoft.com/zh-cn/library/ms533723.aspx
var openerWindow = window.dialogArguments;
var popup = window.open(...);
popup.isPopup = true;
然后,在所提到的页面中:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
禁用Internet Explorer的“保护模式”,以便访问此对象。
步骤如下:
现在您应该能够访问window.opener对象了。
OpenWindow
的函数,该函数会在浏览器中检测window.opener
方法if(window.opener == undefined) {
//probably not Firefox...
}
如果找到它,就使用它,否则测试IE变体并使用它。然后它检查Safari的版本等等...