2014-01-20 84 views
1

是否可以通過窗口名稱檢測javascript是否存在於JavaScript中?檢測窗口是否存在名稱

我的情況是這樣的:

我打開一個彈出窗口,或者一個新的瀏覽器選項卡。

然後我刷新打開popup/new標籤的窗口。

所以我的代碼再次運行在開窗器,所以我不能保存對打開的彈出/選項卡的引用。

我可以使用cookie,但我需要刪除cookie時,我關閉彈出/選項卡,我不認爲有一種方法來檢測到這一點,彈出/選項卡已關閉(跨瀏覽器,當然,和ios! )

如果我可以保存一個彈出/選項卡窗口名稱引用,那麼我可以檢查在開窗器彈出/選項卡我已打開仍然存在?

謝謝!

回答

0

您應該可以保留對剛剛打開的窗口的引用。

實施例從MDN:

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 

即製品在重新打開相同的窗口等一些附加信息;

編輯:從MDN文章上面鏈接:

如果名爲strWindowName窗口已經存在,則strUrl被 加載到現有的窗口。在這種情況下, 方法的返回值是現有窗口,並且忽略strWindowFeatures。 爲strUrl提供一個空字符串是一種在不更改窗口位置的情況下通過其名稱獲取對打開窗口的引用的方法。至 在每次調用window.open()時都會打開一個新窗口,對strWindowName使用值_blank的特殊 。

所以這樣的事情應該工作:

var whandle = 'persistantWindow'; 
var w1 = window.open('http://yoururl.org/page1.html', whandle);  // <- open a window with a name 
var w2 = window.open('http://yoururl.org/page2.html', whandle);  // <- by re-using the same name, the new url will be opened in the same window 
+0

好吧,我說,如果我刷新打開彈出/新標籤窗口。然後我再也沒有那個參考。 – Toniq

+0

查看更新。從同一篇MDN文章中,它說你可以將一個窗口名稱變量傳遞給'window.open'命令。通過使用相同的窗口名稱,您可以將新的URL傳遞到窗口,並將在同一個窗口/標籤頁中打開。 – jasonscript

+0

我不確定我是否不明白您想說什麼,或者您不明白我想要做什麼。如果彈出窗口已經打開,我不想在父窗口中運行該代碼。換句話說,假設我的應用程序在代碼運行時在父窗口中創建了一個div。然後我打開popup並在彈出窗口中創建相同的div,並從父窗口中刪除div。現在打開彈出窗口。現在有人刷新父窗口,並且該窗口本身將再次創建div。如果彈出窗口被打開,我不想在父窗口中創建一個div! – Toniq