这里给出一段测试代码: <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入门教程(1) 什么是JS
JavaScript 参考教程
本教程为未接触过 JavaScript 的读者提供了比较完善的初级知识,但只限于初级知识:所有与动态网页密切相关的 JavaScript 在本教程中都未提及,包括动态定位、动画、让文档接收更多事件(d>>>详细阅读
本文标题:javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
地址:http://www.17bianji.com/kaifa2/JS/29003.html
1/2 1