按F5不会触发mousup事件

时间:2014-06-11 07:17:52

标签: jquery javascript-events

我正在使用jQuery的keyup事件。它除了 F5 以外的所有键都能正常工作。 这是代码:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $(document).keyup(function(e){
    alert(e.keyCode); // This is not working always when we press F5
  });
});
</script>
</head>
</html>

我按下所有键时会收到警报,但是 F5 无法正常工作。 有时会使用 F5 触发警报,有时不会。我在Chrome和Firefox上试过这个。

2 个答案:

答案 0 :(得分:8)

F5 重新加载页面。

似乎页面重新加载是在keydownkeypress事件中启动的,因此您的alert触发太晚。根据您按键的时间长短,mouseup事件仍然会被触发,并且警报会短暂显示,但它不会阻止重新加载过程。

如果您将处理程序绑定到keydown事件,则仅在警报解除后才执行页面重新加载。

DEMO(首先点击空的HTML区域,确保它集中注意力)

答案 1 :(得分:0)

如果你抓住了&#39;按键&#39;事件,你也阻止了&#39;键。出于某种原因,如果您使用&#39;按键,则会捕获键码和ASCII键码。事件(您无法在chrome调试器中看到)。 F5键是&#39; 116&#39;但是用于&#39;#&#39;也是116,所以使用&#39;按键&#39;你阻止F5的事件,但你也阻止&#39; t&#39;应用范围。

所以,试试这个:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){


 $(document).bind('keyup', function(e) {
    alert(e.keyCode);  

  });   
 $(document).bind('keypress', function(event) {
    if (event.keyCode == 116){
     alert("f5"); 
    }    

  });  
});
</script>