javaScript事件學(xué)習(xí)小結(jié)(四)event的公共成員(屬性和方法)
相關(guān)閱讀:
JavaScript事件學(xué)習(xí)小結(jié)(五)js中事件類(lèi)型之鼠標(biāo)事件
http://m.fzitv.net/article/86259.htm
JavaScript事件學(xué)習(xí)小結(jié)(一)事件流
http://m.fzitv.net/article/86261.htm
javaScript事件學(xué)習(xí)小結(jié)(四)event的公共成員(屬性和方法)
http://m.fzitv.net/article/86262.htm
JavaScript事件學(xué)習(xí)小結(jié)(二)js事件處理程序
http://m.fzitv.net/article/86264.htm
JavaScript事件學(xué)習(xí)小結(jié)(三)js事件對(duì)象
一、事件對(duì)象的公共成員
1、DOM中的event的公共成員
event對(duì)象包含與創(chuàng)建它的特定事件有關(guān)的屬性和方法。觸發(fā)的事件類(lèi)型不一樣,可用的屬性和方法不一樣。但是,DOM中所有事件都有以下公共成員。

a、對(duì)比currentTarget和target
在事件處理程序內(nèi)部,對(duì)象this始終等于currentTarget的值,而target則只是包含事件的實(shí)際目標(biāo)。
舉例:頁(yè)面有個(gè)按鈕,在body(按鈕的父節(jié)點(diǎn))中注冊(cè)click事件,點(diǎn)按鈕時(shí)click事件會(huì)冒泡到body進(jìn)行處理。
<body>
<input id="btn" type="button" value="click"/>
<script>
document.body.onclick=function(event){
console.log("body中注冊(cè)的click事件");
console.log("this===event.currentTarget? "+(this===event.currentTarget)); //true
console.log("currentTarget===document.body?"+(event.currentTarget===document.body)); //true
console.log('event.target===document.getElementById("btn")? '+(event.target===document.getElementById("btn"))); //true
}
</script>
</body>
運(yùn)行結(jié)果為:
b、通過(guò)type屬性,可以在一個(gè)函數(shù)中處理多個(gè)事件。
原理:通過(guò)檢測(cè)event.type屬性,對(duì)不同事件進(jìn)行不同處理。
舉例:定義一個(gè)handler函數(shù)用來(lái)處理3種事件:click,mouseover,mouseout。
<body>
<input id="btn" type="button" value="click"/>
<script>
var handler=function(event){
switch (event.type){
case "click":
alert("clicked");
break;
case "mouseover":
event.target.style.backgroundColor="pink";
break;
case "mouseout":
event.target.style.backgroundColor="";
}
};
var btn=document.getElementById("btn");
btn.onclick=handler;
btn.onmouseover=handler;
btn.onmouseout=handler;
</script>
</body>
運(yùn)行效果:點(diǎn)擊按鈕,彈出框。鼠標(biāo)經(jīng)過(guò)按鈕,按鈕背景色變?yōu)榉凵皇髽?biāo)離開(kāi)按鈕,背景色恢復(fù)默認(rèn)。
c、stopPropagation()和stopImmediatePropagation()對(duì)比
同:stopPropagation()和 stopImmediatePropagation()都可以用來(lái)取消事件的進(jìn)一步捕獲或冒泡。
異:二者的區(qū)別在于當(dāng)一個(gè)事件有多個(gè)事件處理程序時(shí),stopImmediatePropagation()可以阻止之后事件處理程序被調(diào)用。
舉例:
<body>
<input id="btn" type="button" value="click"/>
<script>
var btn=document.getElementById("btn");
btn.addEventListener("click",function(event){
console.log("buttn click listened once");
// event.stopPropagation();//取消注釋查看效果
// event.stopImmediatePropagation();//取消注釋查看效果
},false);
btn.addEventListener("click",function(){
console.log("button click listened twice");
},false);
document.body.onclick= function (event) {
console.log("body clicked");
}
</script>
</body>
運(yùn)行效果:
d、eventPhase
eventPhase值在捕獲階段為1,處于目標(biāo)階段為2,冒泡階段為3。
例子:
<body>
<input id="btn" type="button" value="click"/>
<script>
var btn=document.getElementById("btn");
btn.onclick= function (event) {
console.log("按鈕DOM0級(jí)方法添加事件處理程序eventPhase值為?"+event.eventPhase);
}
btn.addEventListener("click",function(event){
console.log("按鈕DOM2級(jí)方法添加事件處理程序,且addEventListener第三個(gè)參數(shù)為true時(shí)eventPhase值為?"+event.eventPhase);
},true);
btn.addEventListener("click",function(event){
console.log("按鈕DOM2級(jí)方法添加事件處理程序,且addEventListener第三個(gè)參數(shù)為false時(shí)eventPhase值為?"+event.eventPhase);
},false);
document.body.addEventListener("click", function (event) {
console.log("body上添加事件處理程序,且在捕獲階段eventPhase值為?"+event.eventPhase);
},true);
document.body.addEventListener("click", function (event) {
console.log("body上添加事件處理程序,且在冒泡階段eventPhase值為?"+event.eventPhase);
},false);
</script>
運(yùn)行效果:
2、IE中event的公共成員
IE中的event的屬性和方法和DOM一樣會(huì)隨著事件類(lèi)型的不同而不同,但是也有一些是所有對(duì)象都有的公共成員,且這些成員大部分有對(duì)應(yīng)的DOM屬性或方法。

以上所述是小編給大家介紹的javaScript事件學(xué)習(xí)小結(jié)(四)event的公共成員(屬性和方法)的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有疑問(wèn)歡迎給我留言!
相關(guān)文章
django js 實(shí)現(xiàn)表格動(dòng)態(tài)標(biāo)序號(hào)的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了django js 實(shí)現(xiàn)表格動(dòng)態(tài)標(biāo)序號(hào) ,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
通過(guò)JS判斷聯(lián)網(wǎng)類(lèi)型和連接狀態(tài)的實(shí)現(xiàn)代碼
這篇文章主要介紹了通過(guò)JS判斷聯(lián)網(wǎng)類(lèi)型和連接狀態(tài)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
JavaScript使用前綴樹(shù)(trie樹(shù))實(shí)現(xiàn)文本高亮
這篇文章主要為大家詳細(xì)介紹了JavaScript如何使用前綴樹(shù)(trie樹(shù))實(shí)現(xiàn)文本高亮效果,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2024-04-04
ES6的函數(shù)rest參數(shù)使用小結(jié)
這篇文章主要介紹了ES6的函數(shù)rest參數(shù)用法,通過(guò)一個(gè)rest參數(shù)代替arguments變量的例子,對(duì)ES6?rest參數(shù)用法講解的非常詳細(xì),需要的朋友可以參考下2023-08-08
BootStrap Table前臺(tái)和后臺(tái)分頁(yè)對(duì)JSON格式的要求
Bootstrap是一款前端非常流行的框架,其中的表格更為大家經(jīng)常使用。下面通過(guò)本文給大家介紹BootStrap Table前臺(tái)和后臺(tái)分頁(yè)對(duì)JSON格式的要求,一起看看吧2017-06-06
微信小程序發(fā)送短信驗(yàn)證碼完整實(shí)例
這篇文章主要介紹了微信小程序發(fā)送短信驗(yàn)證碼完整實(shí)例,實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼,帶60秒倒計(jì)時(shí)功能,無(wú)需服務(wù)器端,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2019-01-01
JS與Ajax Get和Post在使用上的區(qū)別實(shí)例詳解
這篇文章主要介紹了JS與Ajax Get和Post在使用上的區(qū)別實(shí)例詳解的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
js實(shí)現(xiàn)的在本地預(yù)覽圖片功能示例
這篇文章主要介紹了js實(shí)現(xiàn)的在本地預(yù)覽圖片功能,結(jié)合實(shí)例形式分析了JavaScript兼容移動(dòng)web與IE瀏覽器的圖片預(yù)覽功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11




