2013-10-23 100 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”)点击...)为避免显示警报在网页的各个部分之间进行导航时。