把事件捕獲和冒泡的過程統(tǒng)稱為事件的傳播 事件的傳播是可以阻止的:
在捕獲的過程中stopPropagation();后,后面的冒泡過程也不會發(fā)生了~ 在IE中則使用cancelBubble(IE中只有冒泡,沒有捕獲)
3.阻止事件的默認行為,例如click <a>后的跳轉~
不是所有的事件都能冒泡,例如:blur、focus、load、unload,(這個是從別人的文章里摘過來的,我沒測試)
JavaScript所有事件的兩個階段:捕獲和冒泡 一下是一段簡單的HTML代碼 <body> <ul> <li> click here </li> </ul> </body> 如果我們點擊了Li,則先回響應body的捕獲事件,接下來就是ul li ,然后進入冒泡時間,順序相反。 如果我們分別設置了響應函數(shù),則會分別響應 我們可以阻止冒泡 function(e) { if (e && e.stopPropagation) // 支持W3C的stopPropation()方法 e.stopPropagation () else // 否則,我們得使用IE的方式來取消事件冒泡 window.event.cancelBubble = true; } 事實上,捕獲階段是一個和冒泡階段完全相反的過程,即事件由祖先元素向子元素傳播,和一個石子兒從水面向水底下沉一樣,要說明的是在IE,opera瀏覽器中,是不存在這個階段的。從各瀏覽器提供的注冊事件監(jiān)聽的方法中可見一斑,例如適用于ie,opera的attachEvent,有兩個參數(shù),attachEvent(”on” type,fn),而適用于所謂標準瀏覽器的addEventListener則有三個參數(shù),addEventListener(type,fn,boolean),前面兩個參數(shù)不用解釋,第三個參數(shù)boolean,就是決定注冊事件發(fā)生在捕獲階段還是冒泡階段,具體參考如下: true : 捕獲階段 false : 冒泡階段
|
|