JSにおける事件処理メカニズム
3337 ワード
jsにおけるイベントの処理は三つの段階に分けられており、ターゲットフェーズの捕獲フェーズの泡立ち段階(以下、説明せずに標準ブラウザの下)はDOM 2レベルのイベントに含まれている.
IE(IE 6 7 8)のイベントモニターには多くの互換性の問題があります.遅くなったら詳細にブログを書いて紹介します.IEの簡単な互換性の問題の前には標準ブラウザの後にIEがあります.
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の中で事件の伝播の構造を利用しました.どのような状況でこの方式を使いますか?いくつかの動的要素において,この方法を用いると,私たちの結合イベントのトラブルをうまく解決できます.