我正在打开一个模式弹出窗口。然后我使用 . 访问父窗口文本框和其他属性window.opener
。它在 Firefox 中运行良好,但在 IE8 中运行良好。它给出错误'window.opener is null'。如何访问在两个浏览器中都可以使用的子窗口中的父窗口属性。
问问题
70357 次
5 回答
10
有两种解决方法: 注意:如果使用“ showModalDialog ” ,IE 不支持“ window.opener ” 。
1)代替“ window.showModalDialog ”使用“ window.open ”
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>
于 2011-06-22T19:02:41.313 回答
8
您可以将参数传递给 showModalDialog 函数。只需将窗口对象作为参数传递。
window.showModalDialog(theURL, window);
Yo 可以使用 dialogArguments 从模态窗口访问参数。请参阅:http: //msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
于 2011-02-03T11:53:33.683 回答
1
禁用 Internet Explorer 的“保护模式”,它会阻止访问此对象。
步骤如下:
- 按 Alt+T 显示工具菜单
- 点击“互联网选项”
- 选择“安全”选项卡
- 确保所选区域包含您的站点。对于 Intranet 站点,它通常是“本地 Intranet”区域。
- 取消勾选“启用保护模式”
- 关闭所有 IE 选项卡和窗口并重新打开。
现在您应该可以访问 window.opener 对象了。
于 2014-06-20T02:16:21.030 回答
0
我将采取的方法如下:
- 使用现有的 JavaScript UI 库,因为您不是第一个想要这样做的人,失败了
- 创建一个名为 的函数
OpenWindow
,浏览器会嗅探该window.opener
方法
例如:
if(window.opener == undefined) {
//probably not Firefox...
}
如果找到它然后使用它,否则它会测试 IE 变体并使用它。然后它会检查 Safari 的版本等...
于 2011-02-03T12:00:51.533 回答
0
作为跨浏览器的替代方案,您可以在打开新窗口时为其提供自定义属性:
var popup = window.open(...);
popup.isPopup = true;
然后,在引用的页面中:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
于 2018-03-08T14:03:06.333 回答