onkeydown,onkeyup,onkeypress,onclick,ondblclick

昨天群里面的朋友问了个比较有意思的问题,keydown,keyup,keypress事件的先后顺序。

这里给出一段测试代码:

<script type="text/javascript">
document.onkeydown = function(){
 document.getElementById("test").innerHTML += "keydown<br/>";
}
document.onkeyup = function(){
 document.getElementById("test").innerHTML += "keyup<br/>";
}
document.onkeypress = function(){
 document.getElementById("test").innerHTML += "keypress<br/>";
}
</script>
<div id="test"></div>

测试结果为:

keydown
keypress
keyup
显而易见,事件发生的顺序是: keydown --> keypress --> keyup
当按住一个键一段时间后再放开时,结果为:
keydown
keypress
keydown
keypress
keydown
keypress
keydown
keypress
...
keyup
n个keydown和n个keypress,1个keyup,系统设置的时间间隔.
关于click和dblclick

前段时间群里面的一个朋友问过一个关于click和dblclick的问题,在这里同时也整理一下,他的要求是click和dblclick有不同的事件处理程序,但是如果触发了dblclick则对click不做处理.如何解决?

我们先来看一下事件的发生情况,测试代码如下:

<script type="text/javascript">
document.onclick = function(){
 document.getElementById("test").innerHTML += "click<br/>";
}
document.ondblclick = function(){
 document.getElementById("test").innerHTML += "dblclick<br/>";
}
</script>
<div id="test"></div>

双击时结果如下:

click
dblclick
当放慢点击速度时,结果如下:
click
click
click
可见,dblclick时,首先会触发一个click事件,然后如果在系统设置的双击延迟时间范围内有第二次click事件,则被认为是dblclick事件.
那么如何解决这位朋友提出的问题呢?给出代码如下:
<script type="text/javascript">
function clickTest(){
 document.getElementById("test").innerHTML += "click<br/>";
}
function dblclickTest(){
 document.getElementById("test").innerHTML += "dblclick<br/>";
}
document.onclick = function(){
 this.timeout = window.setTimeout(clickTest,300);
}
document.ondblclick = function(){
 if(this.timeout)window.clearTimeout(this.timeout);
 dblclickTest();
}
</script>
<div id="test"></div>
双击测试结果如下:
dblclick
dblclick
dblclick
dblclick
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值