2013-07-30 85 views
0

我試圖檢測當前頁面是否已在其他選項卡中打開。我試過使用window.open(),但我得到返回當前窗口本身,而不是所謂的其他相同的地址窗口。它將始終返回true。Javascript:檢查此窗口是否已打開

所以說,如果'mysite.com'已經打開,當用戶用'mysite.com'打開一個新窗口時,我會檢測到,關注另一個窗口並關閉當前窗口。

很想聽到任何想法,或者這是否可能。我試圖將所有鏈接捕獲到一個標籤中。

+0

我相信這是可能的,但你將需要一些使用PHP的幫助。相關問題:http://stackoverflow.com/questions/5574970/how-to-detect-if-user-open-two-tabs-for-same-session – aug

+0

如果用戶有兩臺筆記本電腦,或使用netscape和IE , 要麼... ?如果用戶自己在工作中登錄,現在他在家,或者相反,該怎麼辦?關鍵在於,對用戶進行微觀管理可能會讓人感到有些無聊,甚至是徒勞。 – Paul

+0

我很確定無法關閉一個選項卡並通過JS代碼激活另一個_specific_選項卡。 (想象一下,如果廣告能夠在另一個標籤頁或窗口中瀏覽時激活自己的標籤會有多惱人)。但是您至少可以使用'window.close()'關閉標籤頁或窗口 - 但是瀏覽器也許會詢問用戶是否關閉標籤/窗口,如果它沒有被代碼打開的話。 (想象一下你用' window.close()>>'或者可以關閉任何窗口的廣告......的樂趣......) – fero

回答

0

即使您只關注同一臺計算機上同一瀏覽器中的選項卡,嘗試通過純JavaScript實現此目的的問題是,儘管您可以在每個網站頁面上設置一個Cookie(window.onload)記錄用戶最初訪問您的網站時,沒有安全的方法來確保您在離開時刪除此Cookie。

雖然你已經把onunload & onbeforeunload事件,當你在一個鏈接離開網站,這些都沒有被解僱,使用瀏覽器的後退按鈕或關閉瀏覽器。

1

您可以使用localStorage事件在不同標籤之間進行通信,從而檢測頁面是否已經打開。檢查這個答案:https://stackoverflow.com/a/14792159/60745

+0

確實,我已經寫了一些代碼,允許同一應用的不同窗口中的對象相互交談。但是,這解決了一半的問題。我仍然需要原來的窗口重新獲得焦點,然後第二個窗口關閉...... – ArtPulse