2012-07-12 1 views

答えて

7

簡単な答えはノーです - ブラウザのセキュリティモデルは、明示的にユーザーがあなたのページ(リフレッシュ/クローズ/内部リンク/外部リンク)を残すように選択したどのような方法で検出することはできません。

detect refresh browser for unload/beforeunload when browser closed

ことが可能です - クッキーを使用して - ユーザーは、彼らが同じセッションでそのサイトに以前いたかどうかをあなたのページをロードする際にチェックするために - 例えば彼らリフレッシュしているかどうかを検出 - しかし、彼らは更新されません前:

Detect Browser Refresh in Javascript

Check if page gets reloaded or refreshed in Javascript

部分と不完全なアプローチは、彼らが押された「F5」または「Ctrlキー+ Rを」かどうかを検出することであろうページがアンロードされる直前の "Cmd + R"(リフレッシュのキーボードショートカット)。これにより、リフレッシュが検出されますが、ユーザーが実際にリフレッシュボタンをクリックした場所は検出されません。 How can I detect when the user is leaving my site, not just going to a different page?

:リンクは、リンクのターゲットが同じ敷地内にあるかどうかをクリックされたときにも を検出することができます

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

関連する問題