我正在尝试下面的内容,
var myWindow = null;
if(!myWindow || myWindow.closed)
{
myWindow = window.open(url, windowId);
}
else
{
myWindow.focus();
}
所有浏览器都返回window.open()的窗口引用,但IE 9返回NULL。有没有人有更多关于为什么返回null的信息或者可能是IE9的变通解决方案?
答案 0 :(得分:28)
window.open
将返回NULL参考对象ZONE是不同的,即在我的情况下本地文件从Intranet打开弹出窗口。
window.open
也会返回参考对象
答案 1 :(得分:5)
出于好奇,你的windowId
是什么?它有空间吗?
因为,apparently IE9 will fail if there's a space in the window title。
答案 2 :(得分:1)
实际上在我的情况下,我正在获取window.open引用null如果我打开localhost或intranet站点URL。如果我的弹出窗口包含任何互联网站点网址,那么我将获得参考窗口对象。 我这样做是为了解决这个问题:
现在,它开始为我提供了使用Intranet Sites打开的弹出窗口的窗口对象引用。
此外,它可能是URL安全或在受信任的站点区域中添加的问题。如果您能提供URL,它将有所帮助。
希望这有帮助。
答案 3 :(得分:0)
我们的应用存在此问题。我们正在使用Dropbox进行外部上传,但无法正常工作。
这是我们修复它的方式。总结不同的阅读材料和解决方案。请让我知道任何部分不正确或不合理。
Root Cause:
从IE11开始,Windows在启动时已开始为应用程序分配安全级别。低安全性窗口和高安全性窗口。同样会启动IE11,当新弹出窗口打开时,它不是主浏览器窗口的子窗口。相反,它是一个全新的IE11实例,为其分配了不同的安全级别。通常,外部上传机制使用JavaScript的跨窗口消息传递功能工作。如果那不起作用,则外部上传不起作用。根据Windows安全标准,低安全性窗口无法将消息发送到高安全性窗口。退后一步,看看我们的Windows机器,它们由我们的内部团队运送。默认情况下,我们所有的域Web应用程序都被添加到Windows计算机中的受信任站点。但是,外部上载链接(如Dropbox)不会添加到受信任的站点。因此,当您在IE11中打开Our App时,窗口会自动将IE11窗口标记为“高安全性”窗口。现在,当您由于Dropbox不受信任的站点而尝试通过Dropbox上载设计文件时,创建的新弹出窗口是安全级别较低的新IE11实例。因此,在“ Dropbox”窗口打开后,它将失去与作为“我们的应用”的父窗口的连接。这导致了外部上传的问题
Fix
:
通过Internet选项>安全>受信任的站点将yoursite.com和dropbox.com都添加到IE11中的受信任站点,或者将它们都删除。
通过Internet选项>安全性>启用保护模式,然后在重新启动浏览器中标记IE11中的启用保护模式,从而在IE11中启用保护模式。
这对我们的客户而言不是真正的问题。如果对他们不起作用,则可能是由于某种原因,这两个站点中的任何一个都被添加到了受信任的站点列表中,而不是两个都被添加。