javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
发布时间:2016-12-30 来源:查字典编辑
摘要:这里给出一段测试代码:document.onkeydown=function(){document.getElementById("test...

这里给出一段测试代码:

<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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类