在chrome中的新选项卡中查找以前由window.open打开的窗口

时间:2013-05-13 16:51:57

标签: javascript google-chrome file-io window crosstab

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

然后,当您想要从任何标签关闭它时:

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

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

http://www.jstorage.info/