2013-10-23 146 views

回答

4

不幸的是onbeforeunload事件在瀏覽器中偵聽頁面狀態。去另一個頁面以及刷新將改變頁面狀態,意味着onbeforeunload將被觸發。

所以我認爲這是不可能只捕獲刷新。

但是,如果您要通過JavaScript來監聽並阻止Keypress,那麼就可以實現。

刷新可以通過F5按Ctrl[R鍵來完成,所以你的目標是阻止這些行爲。

使用jQuery .keydown()你可以檢測這些鍵碼:

對於按Ctrl[R

$(document).keydown(function (e) { 
    if (e.keyCode == 65 && e.ctrlKey) { 
     e.preventDefault(); 
    } 
}); 

對於F5

$(document).keydown(function (e) { 
    if (e.which || e.keyCode) == 116) { 
     e.preventDefault(); 
    } 
}); 
+0

我不想趕上頁面刷新。我希望頁面刷新不會觸發事件。 – Refael

+0

看我更新的答案。 – zur4ik

+1

點擊刷新圖標怎麼樣? – Refael

0

我想補充一個信息提示onbeforeunload,所以我的解決辦法是這樣的一個:

$(document).ready(function(){ 
     window.onbeforeunload = PopIt; 
     $("a").click(function(){ window.onbeforeunload = UnPopIt; }); 
     $(document).keydown(function(e){ 
      if ((e.keyCode == 82 && e.ctrlKey) || (e.keyCode == 116)) { 
       window.onbeforeunload = UnPopIt; 
      } 
     }); 
    }); 

    function PopIt() { return "My message before leaving"; } 
    function UnPopIt() { /* nothing to return */ } 

三線($( 「A」)點擊...)爲避免顯示警報在網頁的各個部分之間進行導航時。