【问题标题】:Find window previously opened by window.open in new tab in chrome查找以前由 window.open 在 chrome 中的新选项卡中打开的窗口
【发布时间】:2013-05-07 18:59:13
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

    http://www.jstorage.info/

    【讨论】:

    • 我正在寻求方法来关闭在tab A 创建的弹出窗口,但如果需要,应该从tab B 关闭 - 在 chrome 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多