首頁 >web前端 >js教程 >淺談JavaScript的事件_javascript技巧

淺談JavaScript的事件_javascript技巧

WBOY
WBOY原創
2016-05-16 16:12:361100瀏覽

1、事件流

    事件流程描述的是從頁面中接收事件的順序。但IE提出的是冒泡流,而Netscape Communicator提出的是捕獲流。
JavaScript事件流

2、事件冒泡(event bubbling)

    事件開始由最具體的元素(嵌套層次最深的那個節點)接收,然後逐級向上傳播為較不為具體的節點(文件)。如下:

複製程式碼 程式碼如下:


   
        事件冒泡
   
   
       
點選我

   

window.onload = function(){
    var obj = document.getElementById("test");
    obj.onclick = function(){
        alert(this.tagName);
    };
    document.body.onclick = function(){
        alert(this.tagName);
    };
    document.documentElement.onclick = function(){
        alert(this.tagName);
    };
    document.onclick = function(){
        alert("document");
    };
    window.onclick = function(){
        alert("window");
    }
};

事件傳播順序:div——>body——>html——>document

注意:
    現代所有瀏覽器都支援冒泡事件,但實作上仍有一些差異。 IE5.5及更早版本中的事件冒泡會直接從body跳到document(不執行html)。 Firefox、Chrome和Safari則將事件一直冒泡到window物件。

3、停止事件冒泡與取消預設事件

 a. 取得事件物件

複製程式碼 程式碼如下:

function getEvent(event) {
// window.event IE
// event 非IE
return event || window.event;
}

 b 功能:停止事件冒泡 

複製程式碼 程式碼如下:

function stopBubble(e) {
 // 如果提供了事件對象,則這是一個非IE瀏覽器
 if ( e && e.stopPropagation ) {
 // 因此它支援W3C的stopPropagation()方法
 e.stopPropagation();
} else {
 // 否則,我們需要使用IE的方式來取消事件冒泡
window.event.cancelBubble = true;
}
}

 c. 阻止瀏覽器的預設行為

複製程式碼 程式碼如下:

function stopDefault( e ) {
     // 阻止預設瀏覽器動作(W3C)
     if ( e && e.preventDefault ) {
         e.preventDefault();
     } else {
        // IE中阻止函數器預設動作的方式
        window.event.returnValue = false;
    }
    return false;
}
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn