2013-03-02 78 views
0

我想检查是否在我的网站的窗口可以被关闭:IE:取消设置window.opener

if (window.opener && window.opener.closed === false) { 

这是用户能够通过那台window.opener另一个窗口达到我的网站。我可以“重置” window.opener当用户开始使用达到我的网站:window.opener = null。然而,这并不在IE浏览器(下页,window.opener恢复)。

有没有一种方法来“复位”在IE中window.opener结构,或其他跨浏览器解决我的问题有什么看法?

回答

1

我找到了解决办法,这不是完全相似,但我的目的工作。如果开叫者来自同一个域,我只想关闭窗口。

if (window.opener.location.hostname.indexOf(window.location.hostname) > -1) { 

然而,IE不允许您访问window.opener.location如果揭幕战是由不同的主机。这实际上工作得很好:

try { 
    //snippet above 
} 
catch (error) { /* no action needed; assume different host */ } 
+0

应该可以重构上面的'if(window.opener!== window)'来查看它是否有相同的引用。 – 2013-03-02 17:49:17

+0

@MauvisLedford如果用户从我的域中打开一个新窗口,那么'window.opener'不会在新窗口中显示为'window',但我希望它关闭。如果用户打开一个从另一* *域我的窗口,他们也将不匹配,但我会** **不希望它关闭。我认为你的建议是不正确的。 – 2013-03-02 17:52:03

+0

Touche。 'if(window.opener!== null && window.opener!== window)' – 2013-03-02 20:50:33