2014-10-20 62 views
0

我知道我可以使用onunload的當用戶退出的頁面做一些事情,問題是,它的用戶是否離開頁面,重新加載,關閉頁面等Javascript:如何檢查用戶是否更改域名?

我只需要運行一個腳本當用戶離開我的網頁到另一個域名時,例如:

如果用戶在www.exemple.com/here並轉至www.exemple.com/,則不會發生任何事情,但如果他從www.exemple .com /這裏www.anotherdomain.com/然後腳本應該運行。

這樣做的最佳方法是什麼?

至於爲什麼,我需要的是,這裏的故事:

我有Google標記工作,我需要在會議結束時啓用標記。會話僅在用戶關閉窗口或離開網站域時結束。如果他重新加載或者如果站點內的停留,標籤不應該觸發。

+0

我很好奇你爲什麼需要這個。 – akonsu 2014-10-20 13:34:57

+2

聯繫所有適用的頁面上的鏈接/表單,點擊/提交時設置全局,並在onunload中檢查它。 – 2014-10-20 13:37:50

回答

3

我需要這樣的東西我自己。我通過在完全加載頁面後運行特殊功能來解決它​​。此功能將單擊事件處理程序附加到檢查鏈接指向的所有<a>元素,並根據鏈接目標設置標誌。這個標誌在我的onunload函數中被檢查過,所以我可以決定是否顯示警告。

但這是一個非常特殊的實現。這對手動頁面更改(用戶輸入URL)或javascript位置更改不起作用。

不幸的是,我沒有源代碼了,但它可能是這樣的(使用jQuery):

var leaving = false; 

$(function() { 
    $('a').click(function() { 
     leaving = !$(this).attr('href').match(/regex/); 
    }); 
}); 

$(window).bind('beforeunload', function() { 
    return leaving ? 'Really want to leave the page?' : null; 
}); 

(未測試!)

編輯:亞歷克斯K.在評論中建議,你也可以勾選表格,而不僅僅是鏈接。

+0

我想這也適用於手動網址更改,因此+1這個答案 – Mihir 2014-10-20 14:01:36

+1

另外一件事情要注意,在beforeunload事件hanler中顯示的消息將不會顯示在Firefox中 – Mihir 2014-10-20 14:05:48

+0

@Mhhir呃,這是正確的 - 不幸的。至少Firefox會顯示一條消息,指出您可能會丟失數據,並且您可以在事件處理程序中執行一些清理任務。 – fero 2014-10-20 14:10:26

0

似乎無法獲得您的域外部的下一個URL,您可以檢查片段標識符參數ex中的更改; yourpage.html#sectionayourpage.html#sectionb使用window上的事件onhashchange。嘗試以下腳本。 請注意,這個JS將在現代瀏覽器IE8上工作。

<!DOCTYPE html> 
    <html> 
    <head> 
    <script> 
    window.start = function(){ 
     var url = "http://www.yoursite.com"; 
     if ("onhashchange" in window) { 
     alert("The browser supports the hashchange event!"); 
     } 

     function locationHashChanged() { 
     if (location.hash != url) { 
      alert('change url'); 
     } 
     } 

     window.onhashchange = locationHashChanged; 
     } 
    </script> 

    </head> 
    <body onload="window.start();"> 
    </body> 
    </html>