2013-05-13 140 views
0

我有以下代碼(來自相關的),用於查找對先前打開的窗口的引用並關閉它們。查找先前由window.open在chrome中新選項卡打開的窗口

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中關閉它?

相關的:

編輯:

我發現這可能是消息傳遞所有其他選項卡做親密動作是有用的,但避風港在鉻中測試:Sending a message to all open windows/tabs using JavaScript

回答

2

我之前使用過jStorage的PubSub功能來做到這一點。它依賴於jQuery,因此如果您尚未使用它,它可能不是最好的解決方案,但您可以查看源代碼以瞭解其工作原理。

在所有選項卡和彈出窗口中包含jStorage。在彈出的窗口中添加以下代碼:

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

然後,當你想從任何標籤關閉:

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

您可以使用第二個參數實際發送數據到其他窗口,如果你想要進行一些更復雜的交互,但在這種情況下只需更改密鑰jStorage.set就足夠了。

http://www.jstorage.info/

+0

我所要求的方式來關閉在'標籤A'創建的,但如果需要的話應該從'標籤B'關閉彈出窗口 - 鉻。 – 2013-05-13 17:02:37

+0

啊,仔細閱讀:更新我的答案 – 2013-05-13 17:13:58

相關問題