JavaScriptの事件について簡単に話します.

2220 ワード

1、イベントフロー
    イベントフローは、ページからイベントを受信する順序を記述する.しかし、IEは発泡流を提案し、Netscape Communicatorはトラップストリームを提案した.JavaScript事件フロー
2、事件の泡が発生する.
    イベントは、最も具体的な要素(ネストされた階層の最も深いノード)によって受信され、段階的に特定のノード(ドキュメント)と比較して上に伝播される.以下のとおりです
 
  

   
       
   
   
       

   

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->>document
注意:    近代的なすべてのブラウザはすべて泡事件を支持して、しかし実現していくつか違いがあります.IE 5.5およびもっと早いバージョンの中の事件は泡を噴き出して直接にbodyからdocumentまで跳ぶことができます(実行しません).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;
}