我打开一个模式弹出窗口。然后我使用window.opener
访问父窗口文本框和其他属性。它在Firefox中工作正常,但不在IE8中。它给出错误'window.opener为空'。如何访问在两个浏览器中工作的子窗口中的父窗口属性。window.opener替代品
19
A
回答
7
您可以将参数传递给showModalDialog函数。只需传递窗口对象作为参数。
window.showModalDialog(theURL, window);
哟可以使用dialogArguments从模态窗口访问参数。请参阅:http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
0
我会采取的方法是:
- 使用现有的JavaScript UI库,因为你不是第一人,曾经想这样做,做不到这一点
- 创建一个名为
OpenWindow
的函数,即浏览器嗅探window.opener
方法
例如:
if(window.opener == undefined) {
//probably not Firefox...
}
如果它发现它然后使用它,否则它测试IE变体并使用它。然后检查Safari浏览器的版本,等等。
8
有两种方法来解决这个问题: 注:“window.opener”不支持IE,如果使用了“的showModalDialog”。
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>
2
禁用Internet Explorer的“保护模式”,它禁止访问此对象。
这样做的步骤是:
- 按Alt + T以显示工具菜单
- 点击 “Internet选项”
- 选择 “安全” 选项卡
- 确保区域选择含有您的网站。对于Intranet站点,通常是“本地Intranet”区域。
- 取消“启用保护模式”
- 关闭所有IE选项卡和窗口并重新打开。
现在你应该可以访问window.opener对象。
0
作为一个跨浏览器的选择,你可以在你打开它给出一个自定义属性的新窗口:
var popup = window.open(...);
popup.isPopup = true;
然后,在被称为页:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
相关问题
- 1. 替代window.opener
- 2. Window.opener替代时不开放
- 3. QI4J替代品
- 4. PRISM替代品
- 5. Nabaztag替代品?
- 6. Sharepoint替代品?
- 7. OPENDATASOURCE替代品
- 8. JML替代品
- 9. XAML替代品
- 10. NAnt替代品
- 11. Kibana替代品
- 12. @“”的替代品?
- 13. ASIHTTP的最佳替代品,替代品或替代品用于下载队列
- 14. eval()的替代品
- 15. SRSPlus的替代品?
- 16. SharePoint的替代品?
- 17. 替代品删除?
- 18. NHIbernate的替代品?
- 19. KeyboardAvoidingView或替代品
- 20. Essbase的替代品
- 21. CKAN的替代品
- 22. Flash的替代品?
- 23. Portlets的替代品
- 24. java.util.concurrent.ConcurrentSkipListSet的替代品
- 25. 寻呼替代品
- 26. SwaggerHub的替代品
- 27. YQL的替代品
- 28. QC的替代品
- 29. GWT Acegi替代品
- 30. WebSockets的替代品
你试过window.parent.opener? – 2011-02-03 11:52:34
我尝试了window.parent.opener,但我无法访问父文档对象。我将parent.document作为参数传递,并在popup中访问parent.document作为window.dialogArguments.parentDocumentObj,其中parentDocumentObj是包含文档的变量的名称。 – dmay 2011-02-16 12:04:23