js檢測開啟視窗是否存在程式

來源:互聯網
上載者:User

方法一 使用cookie

開啟子視窗的時候,子視窗或者父視窗可以寫一個cookie來標示子視窗是否開啟,然後子視窗關閉的時候刪除這個cookie;這樣即使父視窗重新整理,cookie依然存在,這樣父視窗就可以通過檢測cookie的存在來檢測子視窗是否存在,子視窗和父視窗可以跨子域。

方法二 本機存放區

方法基本和方法一一樣,但是子視窗和父視窗不能跨域,因為本機存放區不能跨域,子域也不可以。
方法三 window.open
無意發現了這個東東,很好的方法,我試了下相容性很好,地址:測試地址;
其大體原理如此:

 代碼如下 複製代碼

window.open(“”, CHILD_WINDOW_NAME, CHILD_WINDOW_ATTRS);

通過open一個相同的window名字且地址為空白的視窗,通過判斷這個視窗的這個地址是否是”about:blank”,如果是,那麼這個視窗已經關閉了(前提是前一個開啟的地址不是空的)。

 

 代碼如下 複製代碼
win = window.open("",  CHILD_WINDOW_NAME, CHILD_WINDOW_ATTRS);
if (win.location.href === "about:blank") {
    //視窗不存在
    win = window.open(CHILD_WINDOW_URL,  CHILD_WINDOW_NAME, CHILD_WINDOW_ATTRS);
} else {
    //視窗以已經存在了
    win.focus();
}

這是個不錯的方法,但是開啟子視窗的時候,子視窗不能進行重定位,否則ie下會出現 拒絕訪問 的錯誤,具體的方法看看例子吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.