0

我有以下代码(来自相关),可用于查找对先前打开的窗口的引用并关闭它们。

var playerUrl = 'http://my.player...';
var popupPlayer= window.open('', 'popupPlayer', 'width=150,height=100') ;
if(popupPlayer.location == 'about:blank' ){
    popupPlayer.location = playerUrl ;
}
popupPlayer.focus();

这也适用于 Firefox 中的选项卡,但在 chrome 中,似乎每个单独的选项卡都不知道其他选项卡中发生了什么。我怀疑这是由于每个选项卡都是不同的进程,但有没有绕过这个?

所以基本上,如果我们从选项卡 A 中的页面 A 打开窗口 A,我们可以从选项卡 B 中的页面 B 获取对窗口 A 的引用,然后在 chrome 中关闭它吗?

相关:

编辑:

我发现这对于向所有其他选项卡发送关闭操作可能很有用,尽管尚未在 chrome 中进行测试:Sending a message to all open windows/tabs using JavaScript

4

1 回答 1

2

我之前使用过 jStorage 的 PubSub 功能来执行此操作。它依赖于 jQuery,因此如果您还没有使用它,它可能不是最好的解决方案,但您可以查看源代码以了解它是如何工作的。

在所有选项卡和弹出窗口中包含 jStorage。在弹出窗口中,添加以下代码:

$.jStorage.listenKeyChange('fireClose', function(){
    window.close()
});

然后,当您想从任何选项卡关闭它时:

$.jStorage.set('fireClose', 'anything here, for simplicity');

如果您想要进行一些更复杂的交互,您可以使用第二个参数实际将数据发送到其他窗口,但jStorage.set在这种情况下只需更改密钥就足够了。

http://www.jstorage.info/

于 2013-05-13T16:57:34.957 回答