最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js之事件冒泡和事件捕獲詳細(xì)介紹

 更新時間:2013年10月28日 16:01:17   作者:  
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別,有需要的朋友可以參考一下

(1)冒泡型事件:事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對象)的順序觸發(fā)。

  IE 5.5: div -> body -> document

  IE 6.0: div -> body -> html -> document

  Mozilla 1.0: div -> body -> html -> document -> window

(2)捕獲型事件(event capturing):事件從最不精確的對象(document 對象)開始觸發(fā),然后到最精確(也可以在窗口級別捕獲事件,不過必須由開發(fā)人員特別指定)。

(3)DOM事件流:同時支持兩種事件模型:捕獲型事件和冒泡型事件,但是,捕獲型事件先發(fā)生。兩種事件流會觸及DOM中的所有對象,從document對象開始,也在document對象結(jié)束。

  DOM事件模型最獨特的性質(zhì)是,文本節(jié)點也觸發(fā)事件(在IE中不會)。

支持W3C標(biāo)準(zhǔn)的瀏覽器在添加事件時用addEventListener(event,fn,useCapture)方法,基中第3個參數(shù)useCapture是一個Boolean值,用來設(shè)置事件是在事件捕獲時執(zhí)行,還是事件冒泡時執(zhí)行。而不兼容W3C的瀏覽器(IE)用attachEvent()方法,此方法沒有相關(guān)設(shè)置,不過IE的事件模型默認(rèn)是在事件冒泡時執(zhí)行的,也就是在useCapture等于false的時候執(zhí)行,所以把在處理事件時把useCapture設(shè)置為false是比較安全,也實現(xiàn)兼容瀏覽器的效果。

事件捕獲階段:事件從最上一級標(biāo)簽開始往下查找,直到捕獲到事件目標(biāo)(target)。
事件冒泡階段:事件從事件目標(biāo)(target)開始,往上冒泡直到頁面的最上一級標(biāo)簽。

假設(shè)一個元素div,它有一個下級元素p。
<div>
  <p>元素</p>
</div>
這兩個元素都綁定了click事件,如果用戶點擊了p,它在div和p上都觸發(fā)了click事件,那這兩個事件處理程序哪個先執(zhí)行呢?事件順序是什么?
 
兩種模型
以前,Netscape和Microsoft是不同的實現(xiàn)方式。

Netscape中,div先觸發(fā),這就叫做事件捕獲。

Microsoft中,p先觸發(fā),這就叫做事件冒泡。

兩種事件處理順序剛好相反。IE只支持事件冒泡,Mozilla, Opera 7 和 Konqueror兩種都支持,舊版本的Opera's 和 iCab兩種都不支持 。

事件捕獲
當(dāng)你使用事件捕獲時,父級元素先觸發(fā),子級元素后觸發(fā),即div先觸發(fā),p后觸發(fā)。

事件冒泡
當(dāng)你使用事件冒泡時,子級元素先觸發(fā),父級元素后觸發(fā),即p先觸發(fā),div后觸發(fā)。

W3C模型
W3C模型是將兩者進(jìn)行中和,在W3C模型中,任何事件發(fā)生時,先從頂層開始進(jìn)行事件捕獲,直到事件觸發(fā)到達(dá)了事件源元素。然后,再從事件源往上進(jìn)行事件冒泡,直到到達(dá)document。

程序員可以自己選擇綁定事件時采用事件捕獲還是事件冒泡,方法就是綁定事件時通過addEventListener函數(shù),它有三個參數(shù),第三個參數(shù)若是true,則表示采用事件捕獲,若是false,則表示采用事件冒泡。

ele.addEventListener('click',doSomething2,true)

true=捕獲

false=冒泡

傳統(tǒng)綁定事件方式
在一個支持W3C DOM的瀏覽器中,像這樣一般的綁定事件方式,是采用的事件冒泡方式。

ele.onclick = doSomething2

IE瀏覽器
如上面所說,IE只支持事件冒泡,不支持事件捕獲,它也不支持addEventListener函數(shù),不會用第三個參數(shù)來表示是冒泡還是捕獲,它提供了另一個函數(shù)attachEvent。

ele.attachEvent("onclick", doSomething2);

附:事件冒泡(的過程):事件從發(fā)生的目標(biāo)(event.srcElement||event.target)開始,沿著文檔逐層向上冒泡,到document為止。

事件的傳播是可以阻止的:
• 在W3c中,使用stopPropagation()方法
• 在IE下設(shè)置cancelBubble = true;
在捕獲的過程中stopPropagation();后,后面的冒泡過程也不會發(fā)生了~
3.阻止事件的默認(rèn)行為,例如click <a>后的跳轉(zhuǎn)~
• 在W3c中,使用preventDefault()方法;
• 在IE下設(shè)置window.event.returnValue = false;
4.哇,終于寫完了,一邊測試一邊寫的額,不是所有的事件都能冒泡,例如:blur、focus、load、unload,(這個是從別人的文章里摘過來的,我沒測試)。

相關(guān)文章

  • JavaScript判斷文件類型三種方法詳解

    JavaScript判斷文件類型三種方法詳解

    計算機(jī)系統(tǒng)并不是通過文件的后綴名來判斷文件類型,而是通過文件簽名來判斷,下面這篇文章主要給大家介紹了關(guān)于JavaScript判斷文件類型三種方法的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • js中forEach的用法之forEach與for之間的區(qū)別

    js中forEach的用法之forEach與for之間的區(qū)別

    這篇文章主要介紹了js中forEach的用法之forEach與for之間的區(qū)別,forEach() 調(diào)用數(shù)組的每個元素,并將元素傳遞給回調(diào)函數(shù),下面更多詳細(xì)介紹需要的小伙伴可以參考一下

    2022-03-03
  • Javascript中的this,bind和that使用實例

    Javascript中的this,bind和that使用實例

    這篇文章主要介紹了Javascript中的this,bind和that使用實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • JavaScript圖片旋轉(zhuǎn)效果實現(xiàn)方法詳解

    JavaScript圖片旋轉(zhuǎn)效果實現(xiàn)方法詳解

    這篇文章主要介紹了JavaScript圖片旋轉(zhuǎn)效果實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 網(wǎng)絡(luò)圖片延遲加載實現(xiàn)代碼 超越j(luò)query控件

    網(wǎng)絡(luò)圖片延遲加載實現(xiàn)代碼 超越j(luò)query控件

    原理是分段加載圖片,主要用于大型網(wǎng)站節(jié)省帶寬,可是他們提供的東西壓縮混淆看不清,還有的要基于什么雅虎的什么庫,總之是很麻煩的,JQ的控件倒是夠清晰了,只是還是沒有達(dá)到節(jié)省網(wǎng)絡(luò)帶寬的效果
    2010-03-03
  • Web層改進(jìn)II-用xmlhttp 無聲息提交復(fù)雜表單

    Web層改進(jìn)II-用xmlhttp 無聲息提交復(fù)雜表單

    Web層改進(jìn)II-用xmlhttp 無聲息提交復(fù)雜表單...
    2007-01-01
  • 如何使用JavaScript計算SHA-256?hash值詳解

    如何使用JavaScript計算SHA-256?hash值詳解

    SHA-256是一種常用的散列函數(shù),廣泛應(yīng)用于多種安全程序和協(xié)議中,如TLS、SSL、SSH、PGP和比特幣等,在JavaScript中,可以通過原生API輕松計算SHA-256的hash值,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • JavaScript無操作后屏保功能的實現(xiàn)方法

    JavaScript無操作后屏保功能的實現(xiàn)方法

    今天組里的同事要寫一個屏保的效果,要求鼠標(biāo)無操作N秒后進(jìn)入屏幕保護(hù),滑動鼠標(biāo)的時候取消屏幕保護(hù)。我真是難倒了,糾結(jié)了半天,搞定了,下面給大家分享實現(xiàn)代碼
    2017-07-07
  • Bootstrap登陸注冊頁面開發(fā)教程

    Bootstrap登陸注冊頁面開發(fā)教程

    這篇文章主要介紹了Bootstrap登陸注冊頁面開發(fā)教程,感興趣的小伙伴們可以參考一下
    2016-07-07
  • js實現(xiàn)可愛的氣泡特效

    js實現(xiàn)可愛的氣泡特效

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)可愛的氣泡特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評論

临澧县| 和静县| 巫溪县| 泸定县| 登封市| 淮滨县| 青田县| 青田县| 长顺县| 彝良县| 慈利县| 额济纳旗| 怀宁县| 普格县| 珲春市| 额济纳旗| 叙永县| 伊宁市| 扎赉特旗| 繁峙县| 壶关县| 乡城县| 彭州市| 金溪县| 博爱县| 威海市| 东阳市| 金门县| 安远县| 克拉玛依市| 甘肃省| 东辽县| 罗田县| 甘孜| 前郭尔| 阳高县| 景谷| 韶山市| 喀喇沁旗| 靖边县| 株洲县|