事件流描述的是從頁面中接收事件的順序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕獲流。
JavaScript事件流
2、事件冒泡(event bubbling)
事件開始由最具體的元素(嵌套層次最深的那個(gè)節(jié)點(diǎn))接收,然后逐級(jí)向上傳播為較不為具體的節(jié)點(diǎn)(文檔)。如下:
代碼如下:
事件傳播順序:div——>body——>html——>document
注意:
現(xiàn)代所有瀏覽器都支持冒泡事件,但實(shí)現(xiàn)還有一些差別。IE5.5及更早版本中的事件冒泡會(huì)直接從body跳到document(不執(zhí)行html)。Firefox、Chrome和Safari則將事件一直冒泡到window對(duì)象。
3、停止事件冒泡和取消默認(rèn)事件
a. 獲取事件對(duì)象
代碼如下:
function getEvent(event) {
// window.event IE
// event 非IE
return event || window.event;
}
b 功能:停止事件冒泡
代碼如下:
function stopBubble(e) {
// 如果提供了事件對(duì)象,則這是一個(gè)非IE瀏覽器
if ( e && e.stopPropagation ) {
// 因此它支持W3C的stopPropagation()方法
e.stopPropagation();
} else {
// 否則,我們需要使用IE的方式來取消事件冒泡
window.event.cancelBubble = true;
}
}
c. 阻止瀏覽器的默認(rèn)行為
代碼如下:
function stopDefault( e ) {
// 阻止默認(rèn)瀏覽器動(dòng)作(W3C)
if ( e && e.preventDefault ) {
e.preventDefault();
} else {
// IE中阻止函數(shù)器默認(rèn)動(dòng)作的方式
window.event.returnValue = false;
}
return false;
}
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com