3

私の仕事のほとんどはjQueryでしたが、次のプロジェクトのために、いわば「古い学校」のjsに戻しています(要件-JQUERYやその他のライブラリはありません-私の制御が及ばないので、「jQueryを使用してください」と言わないでください)。私のスコープは、iOSサファリを含む純粋に最新のブラウザーであり、下位互換性は必要ありません。私はイベントハンドラーを見ています-そして私はおそらくクレイジーだと思いましたが、おそらくそれがクレイジーであるために、関連するものを見つけることができません。

  1. コンテンツをAJAX呼び出しに置き換えることが多いため、イベントを要素に直接バインドすることは避けようとしています。

  2. 私の現在の考え方は、リスナーをドキュメントにバインドすることです。かなり標準的な方法のようです。

しかし、すべてのイベントバブリングをスキップできますか?どういうわけか、イベントのバブリングについて知っていることを忘れて、ドキュメントに直接スキップするようにブラウザに指示できますか?これを行うと、親要素に割り当てられたイベントを処理できないことに気付きますが、プロジェクトの範囲を考慮すると、特にブラウザーの習熟度を高めることができれば、それを受け入れることができます。

4

2 に答える 2

4

バブリングフェーズをスキップすることは、実際にはオプションではありません。ただし、最新のブラウザーのサポートのみを目的としているため、最上位()レベルでイベントをキャプチャし、メソッドdocumentを呼び出すだけで済みます。そうすれば、イベントがtarget / srcElementに到達することはなく、バブリングフェーズに到達することもありません。stopPropagation

document.body.addEventListener('click',function(e)
{
    e.stopPropagation();
    //handle event
},true);//<-- true for capturing

キャプチャの詳細は、相変わらず、quirksmodeにあります。

于 2012-10-16T14:29:05.237 に答える
1

すべてのイベントバブリングをスキップできますか?

いいえ。ブラウザはそれを行う方法を提供していません。

于 2012-10-16T14:21:28.820 に答える