2010-04-23 33 views
4

在我的javascript我想用這種方法打開新窗口的URL:如何檢查的JavaScript不要與window.open函數打開同一個窗口

var win = window.open(url...); 

如何檢查這一點,不要打開相同窗口並丟失所有輸入的數據。 例如,如果我在新窗口中打開「www.musite.com/addproduct」URL,輸入數據,請離開我的工作地點。然後我再次點擊打開的窗口,打開新窗口,我丟失了所有數據。

回答

2

下面將讓你在打開的窗口只有一次:

if (typeof win !== 'object') { 
    win = window.open('http://www.google.com'); 
} 
else { 
    // Do nothing 
} 

由於Sani suggested in another answer,明智的做法是跟蹤在關閉窗口的,爲了能夠重新打開它。你可以聽在彈出窗口中的window.onunload事件,如下所示:

window.onunload = function() { 
    window.opener.win = undefined; 
} 

onunload事件處理程序將設置一個打開彈出窗口undefined窗口win全局變量,這樣你就可以重新打開窗口。

請注意,由於same origin policy,這隻有在您打開的彈出窗口與父窗口位於同一個域中時纔有效。另外請注意,我只在Firefox中測試過上述內容。

+0

窗口關閉是否有任何事件?因爲我檢查這個解決方案..和:我第一次打開窗口 - 好的。嘗試打開窗口的第二個副本 - 確定(消息)。關閉窗口。打開一個窗口 - 錯誤(已打開窗口的消息) – Dmitriy 2010-04-23 20:48:40

+0

是的,您可以在彈出窗口中偵聽「window.onunload」事件:https://developer.mozilla.org/en/DOM/window.onunload – 2010-04-23 20:51:29

+0

謝謝很多,效果很好 – Dmitriy 2010-04-23 21:08:15

0

window.open函數返回一個引用到窗口如果successfull或null如果不成功。
你應該檢查win不爲空:

if (win != null) { 
    // It is now safe to open the window. 
} 

你還需要設置win在關閉窗口爲空,這樣你就會知道,你可以再次打開它。

+0

謝謝,我怎麼可以檢查窗戶關閉時的事件? 和... var win = window.open(url) - 此時窗口已經打開 – Dmitriy 2010-04-23 20:43:20

相關問題