2012-07-12 83 views

回答

7

簡單的答案是否定的 - 瀏覽器的安全模型不允許你明確的用戶選擇什麼樣的方式離開你的頁面(刷新/關閉/內部鏈接/外部鏈接)檢測。

detect refresh browser for unload/beforeunload when browser closed

這是可能的 - 使用Cookie - 當用戶加載您的頁面是否以前在同一個會議上該網站查詢 - 例如檢測,如果他們已經刷新 - 但他們刷新不前:

Detect Browser Refresh in Javascript

Check if page gets reloaded or refreshed in Javascript

的部分和不完善的做法是,以檢測他們是否按「F5」或「Ctrl鍵+ R」或在頁面卸載之前的「Cmd + R」(用於刷新的鍵盤快捷鍵)。這將檢測到一些刷新,但不是用戶實際點擊刷新按鈕的位置。

(function($) { 
    var refreshKeyPressed = false; 
    var modifierPressed = false; 

    var f5key = 116; 
    var rkey = 82; 
    var modkey = [17, 224, 91, 93]; 

    // Check for refresh keys 
    $(document).bind(
     'keydown', 
     function(evt) { 
      // Check for refresh 
      if (evt.which == f5key || window.modifierPressed && evt.which == rkey) { 
       refreshKeyPressed = true; 
      } 

      // Check for modifier 
      if (modkey.indexOf(evt.which) >= 0) { 
       modifierPressed = true; 
      } 
     } 
    ); 

    // Check for refresh keys 
    $(document).bind(
     'keyup', 
     function(evt) { 
      // Check undo keys 
      if (evt.which == f5key || evt.which == rkey) { 
       refreshKeyPressed = false; 
      } 

      // Check for modifier 
      if (modkey.indexOf(evt.which) >= 0) { 
       modifierPressed = false; 
      } 
     } 
    ); 

    $(window).bind('beforeunload', function(event) { 
     var message = "not refreshed"; 

     if (refreshKeyPressed) { 
      message = "refreshed"; 
     } 

     event.returnValue = message; 
     return message; 
    }); 
}(jQuery)); 

您也可以檢測當點擊某條鏈路的目標是否是在同一地點或不: How can I detect when the user is leaving my site, not just going to a different page?