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