javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
更新時間:2009年02月04日 03:22:27 作者:
昨天群里面的朋友問了個比較有意思的問題,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
顯而易見,事件發(fā)生的順序是: keydown --> keypress --> keyup
當按住一個鍵一段時間后再放開時,結果為:
keydown
keypress
keydown
keypress
keydown
keypress
keydown
keypress
...
keyup
n個keydown和n個keypress,1個keyup,系統(tǒng)設置的時間間隔.
關于click和dblclick
前段時間群里面的一個朋友問過一個關于click和dblclick的問題,在這里同時也整理一下,他的要求是click和dblclick有不同的事件處理程序,但是如果觸發(fā)了dblclick則對click不做處理.如何解決?
我們先來看一下事件的發(fā)生情況,測試代碼如下:
<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時,首先會觸發(fā)一個click事件,然后如果在系統(tǒng)設置的雙擊延遲時間范圍內(nèi)有第二次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
<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
顯而易見,事件發(fā)生的順序是: keydown --> keypress --> keyup
當按住一個鍵一段時間后再放開時,結果為:
keydown
keypress
keydown
keypress
keydown
keypress
keydown
keypress
...
keyup
n個keydown和n個keypress,1個keyup,系統(tǒng)設置的時間間隔.
關于click和dblclick
前段時間群里面的一個朋友問過一個關于click和dblclick的問題,在這里同時也整理一下,他的要求是click和dblclick有不同的事件處理程序,但是如果觸發(fā)了dblclick則對click不做處理.如何解決?
我們先來看一下事件的發(fā)生情況,測試代碼如下:
<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時,首先會觸發(fā)一個click事件,然后如果在系統(tǒng)設置的雙擊延遲時間范圍內(nèi)有第二次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給按鈕綁定點擊事件(onclick)的方法
- js動態(tài)添加的DIV中的onclick事件簡單實例
- javascript 動態(tài)改變onclick事件觸發(fā)函數(shù)代碼
- IE8的JavaScript點擊事件(onclick)不兼容的解決方法
- JavaScript獲取onclick、onchange等事件值的代碼
- js動態(tài)添加onclick事件可傳參數(shù)與不傳參數(shù)
- javascript使用onclick事件改變選中行的顏色
- JS中雙擊和單擊事件沖突的解決方法
- js鼠標單擊和雙擊事件沖突問題的快速解決方法
- JS實現(xiàn)鼠標單擊與雙擊事件共存
- JS實現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法
相關文章
JavaScript操作localStorage實現(xiàn)保存本地json文件
這篇文章主要為大家詳細介紹了JavaScript如何操作localStorage實現(xiàn)保存本地json文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-02-02使用JavaScript動態(tài)設置樣式實現(xiàn)代碼及演示動畫
使用onmouseover和onmouseout事件實現(xiàn)不同的效果而且是使用js動態(tài)實現(xiàn),本文有利于鞏固你js與css方面的知識,感興趣的你可以了解下哦,希望本文對你有所幫助2013-01-01JS實現(xiàn)課程表小程序(仿超級課程表)加入自定義背景功能
這篇文章主要介紹了JS實現(xiàn)課程表小程序(仿超級課程表)加入自定義背景功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12微信小程序獲取手機網(wǎng)絡狀態(tài)的方法【附源碼下載】
這篇文章主要介紹了微信小程序獲取手機網(wǎng)絡狀態(tài)的方法,涉及微信小程序wx.getNetworkType函數(shù)檢查網(wǎng)絡連接狀態(tài)的相關使用技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12typescript在node.js下使用別名(paths)無效的問題詳解
這篇文章主要給大家介紹了關于typescript在node.js下使用別名(paths)無效問題的相關資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-07-07