2015-06-01 77 views
3

因此,正如其他地方已经讨论过的那样,仅当js使用window.close()时,窗口才能被脚本关闭。如何知道一个窗口是否可以用js关闭

我有一个页面提供了一个按钮来打开讨论窗口。讨论窗口打开到window.open()的新选项卡。讨论页面上有一个按钮,调用window.close(),它会关闭讨论窗口并将您带回到之前的选项卡,以便您可以从停止的地方继续。

问题是,如果有人直接将URL传递给讨论窗口,关闭按钮不起作用。

有没有办法检测窗口是否可以用window.close()关闭,所以我可以只显示按钮,如果它可以工作?

+0

如果window.close不能关闭窗口,它会做些什么?它可能会返回undefined或给出一个错误,你可以检查/捕获 – atmd

+0

我不完全确定,但我会假设你可以设置'var chat = window.open()'当你打开它的按钮,并且然后在关闭时设置“聊天=空”。 '如果(聊天!== null)'那么窗口将通过js –

+1

@atmd打开我认为OP不希望显示按钮,如果它无效。 –

回答

5

您可以检查,看看是否window.openernull

当从另一个窗口中打开一个窗口,它保持一个参考 到第一窗口window.opener。如果当前窗口没有 开启者,则此方法返回NULL。 Windows Phone浏览器不支持window.opener 。如果打开器 位于不同的安全区域,则它在IE中也不受支持。

+0

这样做很好,谢谢。 –

2

您可以尝试使用window.opener对象,它返回到当前窗口打开窗口的引用(如果它是另一个窗口),或NULL如果通过JS不是当前窗口打开。

if (window.opener) //Show button 
+0

这是正确的,但詹姆斯索普击败了你。不过谢谢。 –

相关问题