JSにおける事件処理メカニズム


jsにおけるイベントの処理は三つの段階に分けられており、ターゲットフェーズの捕獲フェーズの泡立ち段階(以下、説明せずに標準ブラウザの下)はDOM 2レベルのイベントに含まれている.
    ele.addEventListener("click",fn1,true);//     :                         
    ele.addEventListener("click",fn1,false);
このような書き方はクリックする時に二回fn 1を実行します.そして、実行したのはtrueのfn 1です.しかし、標準ブラウザの下では、同じ方法でモニターを行うと一回だけバインドされますが、第三のパラメータの違いがわからない段階でこの関数を出発したとしても、バインディングは一回だけです.値はtrueの胃捕獲段階のfalse処理が発泡段階のトリガとなります.
IE(IE 6 7 8)のイベントモニターには多くの互換性の問題があります.遅くなったら詳細にブログを書いて紹介します.IEの簡単な互換性の問題の前には標準ブラウザの後にIEがあります.
e=e||window.event;
e.target= e.srcElement;//   
e.pageX=(document.documentElement.scrollLeft||document.body.scrollLeft)+ e.clientX;
e.pageY=(document.documentElement.scrollTop||document.body.scrollTop)+ e.clientY;
e.preventDefault=function(){e.returnValue=false};//        
e.stopPropagation=function(){e.cancelBubble=true};//      
何が事件の依頼ですか?私達はどうやって事件を運用しますか?簡単な例を挙げてください.
<div id="outer">
      outer
    <div id="middle">
          middle
        <div id="inner">
              inner
            <p id="p1">
                  p1
                <span id="span1">
                      span
                </span>
            </p>
        </div>
    </div>
</div>
もし私はspanにクリックイベントのIDを追加したいならば、イベントの泡が発生するのを阻止しないと、その親レベルの対応するIDをすべてイジェクトします.しかし、私たちはこのクリックでイベントをouterに依頼してから、イベントソースでspanかどうかを判断します.もしそうでなければ、IDをスキップします.これは簡単なイベント依頼のアプリケーションです.簡単に言えば、すべてのイベントを処理し、トップクラスの要素に任せます.それはJSの中で事件の伝播の構造を利用しました.どのような状況でこの方式を使いますか?いくつかの動的要素において,この方法を用いると,私たちの結合イベントのトラブルをうまく解決できます.