javascript事件模型實(shí)例分析
本文實(shí)例講述了javascript事件模型的用法。分享給大家供大家參考。具體分析如下:
一、事件模型
冒泡型事件(Bubbling):事件由葉子節(jié)點(diǎn)沿祖先節(jié)點(diǎn)一直向上傳遞到根節(jié)點(diǎn)
捕獲型事件(Capturing):由DOM樹(shù)最頂元素一直到最精確的元素,與冒泡型事件相反
DOM標(biāo)準(zhǔn)事件模型:DOM標(biāo)準(zhǔn)既支持冒泡型事件,也支持捕獲型事件,可以說(shuō)是兩者的結(jié)合體,首先是捕獲型,接著冒泡傳遞
二、事件對(duì)象
在IE瀏覽器中事件對(duì)象是window的一個(gè)屬性,在DOM標(biāo)準(zhǔn)中,event必須作為唯一的參數(shù)傳給事件處理函數(shù)
獲得兼容的event 對(duì)象:
function(event){
//event 是作為DOM標(biāo)準(zhǔn)的參數(shù)傳入處理函數(shù)
event = event ?event : window.event;
}
在IE中,事件的對(duì)象包含在event的srcElement中,而在DOM標(biāo)準(zhǔn)中,對(duì)象包含在target屬性中
獲得兼容的event 對(duì)象指向的元素:
var target =event.srcElement ? event.srcElement : event.target ;
前提是,保證event對(duì)象已經(jīng)正確的獲取
三、事件監(jiān)聽(tīng)器
IE下,注冊(cè)的監(jiān)聽(tīng)器逆序執(zhí)行,即后面注冊(cè)的先執(zhí)行
element.attachEvent('onclick',observer); //注冊(cè)監(jiān)聽(tīng)器
element.detachEvent('onclick',observer) //移除監(jiān)聽(tīng)器
第一個(gè)參數(shù)為事件名稱(chēng),第二個(gè)為回調(diào)處理函數(shù)
DOM標(biāo)準(zhǔn)下:
element.addEventListener('click',observer,useCapture)
element.removeEventListener('click',observer,useCapture)
第一個(gè)參數(shù)為事件名稱(chēng),沒(méi)有“on”的前綴,第二個(gè)參數(shù)為回調(diào)處理函數(shù),第三個(gè)參數(shù)說(shuō)明回調(diào)函數(shù)是在捕獲階段調(diào)用還是冒泡階段調(diào)用,默認(rèn)true為捕獲階段
四、事件傳遞
兼容地取消瀏覽器的事件傳遞
function someHandler(event){
event = event || window.event;
if(event.stopPropagation) //DOM標(biāo)準(zhǔn)
event.stopPropagation();
else
event.cancelBubble = true; //IE標(biāo)準(zhǔn)
}
取消事件傳遞后的默認(rèn)處理
function someHandler(event){
event = event || window.event;
if(event.preventDefault) //DOM標(biāo)準(zhǔn)
event. preventDefault ();
else
event.returnValue = true; //IE標(biāo)準(zhǔn)
}
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
javascript Xml增刪改查(IE下)操作實(shí)現(xiàn)代碼
比較不錯(cuò)的實(shí)現(xiàn)代碼,大家可以仔細(xì)的看下,思路。2009-01-01
javascript 包裹節(jié)點(diǎn) 提高效率
模仿jQuery,創(chuàng)建幾個(gè)包裹節(jié)點(diǎn)的方法,發(fā)現(xiàn)jQuery的方法很低效啊,下一次他又可以說(shuō)這幾個(gè)方法可以提升了多少多少了。2010-02-02
layer.alert回調(diào)函數(shù)執(zhí)行關(guān)閉彈窗的實(shí)例
今天小編就為大家分享一篇layer.alert回調(diào)函數(shù)執(zhí)行關(guān)閉彈窗的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
JS實(shí)現(xiàn)圖片翻書(shū)效果示例代碼
圖片翻書(shū)效果想必大家都有見(jiàn)過(guò)吧,在本文將為大家介紹下使用js是如何實(shí)現(xiàn)的,具體的代碼如下,感興趣的朋友可以參考下2013-09-09
使用Bootstrap和Vue實(shí)現(xiàn)用戶(hù)信息的編輯刪除功能
這篇文章主要介紹了使用Bootstrap和Vue實(shí)現(xiàn)用戶(hù)信息的編輯刪除功能,需要的朋友可以參考下2017-10-10
ES6 Promise對(duì)象概念及用法實(shí)例詳解
這篇文章主要介紹了ES6 Promise對(duì)象概念及用法,結(jié)合實(shí)例形式詳細(xì)分析了ES6中Promise對(duì)象的概念、原理、創(chuàng)建、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10
layui使用button按鈕 點(diǎn)擊出現(xiàn)彈層 彈層中加載表單的實(shí)例
今天小編就為大家分享一篇layui使用button按鈕 點(diǎn)擊出現(xiàn)彈層 彈層中加載表單的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
For循環(huán)中分號(hào)隔開(kāi)的3部分的執(zhí)行順序探討
這篇文章主要探討了For循環(huán)中分號(hào)隔開(kāi)的3部分的執(zhí)行順序,需要的朋友可以參考下2014-05-05
php和js對(duì)數(shù)據(jù)庫(kù)圖片進(jìn)行等比縮放示例
這篇文章主要介紹了php和js如何對(duì)數(shù)據(jù)庫(kù)圖片進(jìn)行等比縮放,需要的朋友可以參考下2014-04-04

