DOM基礎(chǔ)教程之事件類型
對(duì)于用戶事件類型而言,最常用的是鼠標(biāo)、鍵盤、瀏覽器。
1.鼠標(biāo)事件:
鼠標(biāo)的事件都頻繁使用,下面例子就測(cè)試各種鼠標(biāo)事件
<script language="javascript">
function handle(oEvent) {
var disp = document.getElementById("display");
if (window.event) oEvent = window.event; //處理兼容性,獲得對(duì)象
disp.innerHTML += "鼠標(biāo)事件名稱:" + oEvent.type + "<br>";
}
window.onload = function() {
var oP = document.getElementById("box");
oP.onmousedown = handle;
oP.onmouseover = handle;
oP.onmouseup = handle;
oP.onmouseout = handle;
oP.onclick = handle;
oP.ondblclick = handle;
}
</script>
<div>
<div id="box" style="width:100px;height:100px;background:#ddd;">
box內(nèi)容
</div>
<p id="display"></p>
</div>
鼠標(biāo)的鍵值button測(cè)試(附對(duì)照表)
<script language="javascript">
function TestClick(oEvent) {
var oDiv = document.getElementById("display");
if (window.event)
oEvent = window.event;
oDiv.innerHTML += oEvent.button; //輸出button的值
}
document.onmousedown = TestClick;
window.onload = TestClick; //測(cè)試未按下任何鍵
</script>
<div>
<p id="display"></p>
</div>
2.鍵盤事件
鍵盤事件種類不多,僅三種事件。
keydown(按下某鍵,一直按住會(huì)持續(xù)觸發(fā))
keypress(按下某鍵并產(chǎn)生字符時(shí)觸發(fā),即忽略Shift、Alt,ctrl等功能鍵)
keyup(釋放某個(gè)鍵時(shí)觸發(fā))
鍵盤監(jiān)聽(tīng)示例:
<script language="javascript">
function handle(oEvent) {
if (window.event) oEvent = window.event; //處理兼容性,獲得事件對(duì)象
var oDiv = document.getElementById("display");
oDiv.innerHTML += oEvent.type + " "; //輸出事件名稱
}
window.onload = function() {
var oTextArea = document.getElementById("textin");
oTextArea.onkeydown = handle; //監(jiān)聽(tīng)所有鍵盤事件
oTextArea.onkeyup = handle;
oTextArea.onkeypress = handle;
}
</script>
<div>
<textarea rows="4" cols="50" id="textin">
</textarea>
<p id="display"></p>
</div>
對(duì)于鍵盤而言,最重要的不是事件的名稱,而是所按的是什么鍵。由于ie沒(méi)有charCode屬性,而keyCode只有在keydown、keyup事件發(fā)生的時(shí)才與標(biāo)準(zhǔn)dom的keycode相同,
在keypress事件中等同于keycode,因此采用以下方法。
之所以不采用keyCode是因?yàn)樗硎炬I盤按鍵,而不是輸出的字符,因此,輸出“a”和“A”,keycode是等值的,charcode則以字符區(qū)分。
另外在keypress中,標(biāo)準(zhǔn)dom的keycode值始終為0;
例子:鍵盤事件的相關(guān)屬性:
<script language="javascript">
function handle(oEvent) {
var oDiv = document.getElementById("display");
if (window.event) oEvent = window.event; //處理兼容性,獲得事件對(duì)象
//設(shè)置ie charcode的值
oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
oDiv.innerHTML += oEvent.type + ":charCode" + oEvent.charCode + "keyCode" + oEvent.keyCode + "<br>"; //輸出測(cè)試
}
window.onload = function() {
var oTextArea = document.getElementById("textin");
oTextArea.onkeydown = handle; //監(jiān)聽(tīng)所有鍵盤事件
oTextArea.onkeypress = handle;
}
</script>
<div>
<textarea rows="4" cols="50" id="textin">
</textarea>
<p id="display"></p>
</div>
3.htm事件
對(duì)于瀏覽器而言,各種html有著自己的事件,有一些也是用戶常常接觸到的,比如load,error,select等,常用的html事件如下:
load事件是常用的事件之一,因?yàn)樵陧?yè)面載入完成之前,dom的框架還沒(méi)有搭建完成,因此任何相關(guān)操作都不能發(fā)生。
給window對(duì)象分配load,unload事件等同于<body>標(biāo)記的onload和onunload方法。
相關(guān)文章
JS多線程API?webworker應(yīng)用場(chǎng)景有哪些
這篇文章主要介紹了JS多線程API?webworker應(yīng)用場(chǎng)景有哪些,加密數(shù)據(jù),預(yù)取數(shù)據(jù),預(yù)渲染,復(fù)雜數(shù)據(jù)處理場(chǎng)景,預(yù)加載圖片需要的朋友可以參考下2023-02-02JavaScript實(shí)現(xiàn)快速排序(自已編寫(xiě))
用到j(luò)avascript的排序一組數(shù)字,js沒(méi)有直接的數(shù)字比較的函數(shù)可以調(diào)用,所以自己寫(xiě)了一個(gè)快速排序,需要的朋友可以了解下2012-12-12JavaScript數(shù)組的快速克隆(slice()函數(shù))和數(shù)組的排序、亂序和搜索(sort()函數(shù))
JavaScript數(shù)組的快速克隆(slice()函數(shù))和數(shù)組的排序、亂序和搜索(sort()函數(shù))...2006-12-12javascript學(xué)習(xí)筆記(二)數(shù)組和對(duì)象部分
本文是學(xué)習(xí)筆記系列的第二篇,深入淺出的分別從javascript對(duì)象和數(shù)組兩個(gè)部分介紹了相關(guān)知識(shí),并附上詳細(xì)示例,非常的實(shí)用,有需要的朋友可以參考下2014-09-09Javascript selection的兼容性寫(xiě)法介紹
本文為大家講解下Javascript selection的兼容性寫(xiě)法,感興趣的朋友可以參考下2013-12-12Node.js生成HttpStatusCode輔助類發(fā)布到npm
本篇文章小編為大家介紹利用Node.js為Node.js生成HttpStatusCode輔助類并發(fā)布到npm,有需要的朋友可以參考一下2013-04-04Underscore.js 1.3.3 中文注釋翻譯說(shuō)明
Underscore一個(gè)JavaScript實(shí)用庫(kù),提供了一整套函數(shù)式編程的實(shí)用功能,但是沒(méi)有擴(kuò)展任何JavaScript內(nèi)置對(duì)象,本文就翻譯了它的源代碼中的注釋,需要的朋友可以參考下2015-06-06