JS事件冒泡與事件捕獲

2021-09-01 18:15:23 字數 946 閱讀 7089

1,ie只冒泡,w3c先捕獲再冒泡

鑑於我自己理解事件冒泡和捕獲的艱辛歷程(看了數篇博文之後,我猜這個問題是不是很難~後來發現不是,難是應用到高階的功能中),我要把此文寫得足夠輕便,新手易懂。

為了方便測試(直接複製到html裡面):

•這個**很直觀了,

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

事件捕獲(的過程):則是從document開始,沿著文件樹向下,直到事件目標為止。

關鍵一句:在ie瀏覽器中,只發生事件冒泡的過程;在w3c(或支援事件捕獲的)瀏覽器中,先發生捕獲的過程,再發生冒泡的過程。以上demo在ie和ff下執行並無區別,其實ff瀏覽器下發生了捕獲過程,只是什麼也沒「捕獲」到罷了~

想要新增乙個由捕獲過程觸發的事件,只能這樣了:

addeventlistener('click',functionname,true);//將第三個引數設定為true,表明該事件時為捕獲過程設定的。

•這個就不能在ie下執行了~

2.把事件捕獲和冒泡的過程統稱為事件的傳播

事件的傳播是可以阻止的:

• 在w3c中,使用stoppropagation()方法

• 在ie下設定cancelbubble = true;

在捕獲的過程中stoppropagation();後,後面的冒泡過程也不會發生了~

3.阻止事件的預設行為,例如click 後的跳轉~

• 在w3c中,使用preventdefault()方法;

• 在ie下設定window.event.returnvalue = false;

4.哇,終於寫完了,一邊測試一邊寫的額,不是所有的事件都能冒泡,例如:blur、focus、load、unload,(這個是從別人的文章裡摘過來的,我沒測試)。事件冒泡和捕獲應用起來,還有各種問題,再研究了。

JS 事件捕獲與事件冒泡

點選a時,同時觸發p div 冒泡 觸發事件順序 a p div 捕獲 觸發事件順序 div p a1event.stoppropagation pr p e n 傳遞 會阻止事件捕獲和事件冒泡,但是無法阻止標籤的預設行為,例如點選鏈結任然可以開啟對應網頁。function showalert ev...

js事件(事件冒泡與事件捕獲)

事件冒泡和事件捕獲分別由微軟和網景公司提出,這兩個概念都是為了解決頁面中事件流 事件發生順序 的問題。點選 上面兩個點選事件如果點選的時候,到底誰會被先觸發呢,為了解決這個問題微軟和網景提出了兩種幾乎完全相反的概念。微軟提出了名為事件冒泡 event bubbling 的事件流。事件冒泡可以形象地比...

事件捕獲與事件冒泡

事件傳播模型 事件捕獲和事件冒泡兩個過程 即事件先到達根元素,再從根元素一層一層向下傳播到目標元素,然後再一層一層向上傳到根元素。one twothree four var one document.getelementbyid one var two document.getelementbyid...