2012-07-12 24 views

Trả lời

7

Câu trả lời đơn giản là không có - mô hình an ninh trình duyệt không cho phép bạn để phát hiện một cách rõ ràng bằng cách nào một người dùng đã chọn để rời khỏi trang của bạn (refresh/đóng/nội bộ liên kết/external link).

detect refresh browser for unload/beforeunload when browser closed

Có thể - sử dụng một cookie - để kiểm tra khi người dùng tải trang của bạn cho dù họ trước đây trên trang web đó trong cùng một phiên - ví dụ phát hiện nếu họ đã làm mới - nhưng không phải trước khi họ làm mới:

Detect Browser Refresh in Javascript

Check if page gets reloaded or refreshed in Javascript

Một cách tiếp cận một phần và không hoàn hảo sẽ là để phát hiện xem họ ép "F5" hoặc "Ctrl + R" hoặc "Cmd + R" (phím tắt để làm mới) ngay trước khi tải trang. Điều này sẽ phát hiện một số làm mới, nhưng không phải nơi người dùng thực sự nhấp vào nút làm mới.

(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)); 

Bạn cũng có thể phát hiện khi một liên kết được nhấp dù mục tiêu của liên kết là trên cùng một trang web hay không: How can I detect when the user is leaving my site, not just going to a different page?

Các vấn đề liên quan