javaScript事件學習小結(四)event的公共成員(屬性和方法)
相關閱讀:
JavaScript事件學習小結(五)js中事件類型之鼠標事件
http://chabaoo.cn/article/86259.htm
JavaScript事件學習小結(一)事件流
http://chabaoo.cn/article/86261.htm
javaScript事件學習小結(四)event的公共成員(屬性和方法)
http://chabaoo.cn/article/86262.htm
JavaScript事件學習小結(二)js事件處理程序
http://chabaoo.cn/article/86264.htm
JavaScript事件學習小結(三)js事件對象
一、事件對象的公共成員
1、DOM中的event的公共成員
event對象包含與創(chuàng)建它的特定事件有關的屬性和方法。觸發(fā)的事件類型不一樣,可用的屬性和方法不一樣。但是,DOM中所有事件都有以下公共成員。
a、對比currentTarget和target
在事件處理程序內部,對象this始終等于currentTarget的值,而target則只是包含事件的實際目標。
舉例:頁面有個按鈕,在body(按鈕的父節(jié)點)中注冊click事件,點按鈕時click事件會冒泡到body進行處理。
<body> <input id="btn" type="button" value="click"/> <script> document.body.onclick=function(event){ console.log("body中注冊的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>
運行結果為:
b、通過type屬性,可以在一個函數(shù)中處理多個事件。
原理:通過檢測event.type屬性,對不同事件進行不同處理。
舉例:定義一個handler函數(shù)用來處理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ōu)榉凵?;鼠標離開按鈕,背景色恢復默認。
c、stopPropagation()和stopImmediatePropagation()對比
同:stopPropagation()和 stopImmediatePropagation()都可以用來取消事件的進一步捕獲或冒泡。
異:二者的區(qū)別在于當一個事件有多個事件處理程序時,stopImmediatePropagation()可以阻止之后事件處理程序被調用。
舉例:
<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>
運行效果:
d、eventPhase
eventPhase值在捕獲階段為1,處于目標階段為2,冒泡階段為3。
例子:
<body> <input id="btn" type="button" value="click"/> <script> var btn=document.getElementById("btn"); btn.onclick= function (event) { console.log("按鈕DOM0級方法添加事件處理程序eventPhase值為?"+event.eventPhase); } btn.addEventListener("click",function(event){ console.log("按鈕DOM2級方法添加事件處理程序,且addEventListener第三個參數(shù)為true時eventPhase值為?"+event.eventPhase); },true); btn.addEventListener("click",function(event){ console.log("按鈕DOM2級方法添加事件處理程序,且addEventListener第三個參數(shù)為false時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>
運行效果:
2、IE中event的公共成員
IE中的event的屬性和方法和DOM一樣會隨著事件類型的不同而不同,但是也有一些是所有對象都有的公共成員,且這些成員大部分有對應的DOM屬性或方法。
以上所述是小編給大家介紹的javaScript事件學習小結(四)event的公共成員(屬性和方法)的相關知識,希望對大家有所幫助,如果大家有疑問歡迎給我留言!
相關文章
layui加載數(shù)據顯示loading加載完成loading消失的實例代碼
今天小編就為大家分享一篇layui加載數(shù)據顯示loading加載完成loading消失的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09深入理解JS中的微任務和宏任務的執(zhí)行順序及應用場景
JavaScript中的任務分為宏任務和微任務,它們的執(zhí)行順序會影響代碼的執(zhí)行結果。了解它們的機制可以幫助我們更好地理解事件循環(huán)和異步編程,避免出現(xiàn)一些意想不到的錯誤2023-05-05JavaScript檢測瀏覽器cookie是否已經啟動的方法
這篇文章主要介紹了JavaScript檢測瀏覽器cookie是否已經啟動的方法,實例分析了javascript操作cookie的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02JavaScript實現(xiàn)的多個圖片廣告交替顯示效果代碼
這篇文章主要介紹了JavaScript實現(xiàn)的多個圖片廣告交替顯示效果代碼,涉及javascript數(shù)組遍歷及頁面元素動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09JS 中forEach,for in、for of用法實例總結
這篇文章主要介紹了JS 中forEach,for in、for of用法,結合實例形式總結分析了JS 中forEach,for in、for of的基本功能、使用方法與相關注意事項,需要的朋友可以參考下2023-05-05.net JS模擬Repeater控件的實現(xiàn)代碼
一個模板控件規(guī)定了它的模板語法和js api,這是一個repeater控件的JS實現(xiàn):2013-06-06