私は毎回stopPropagationを使用しますか?プロトタイプするevent.stopPropagation> = 8
この質問は役に立ちましたか?JavaScript Event prototype in IE8しかし、私は受け入れられた答えと、本質的に設定して忘れることができるプロトタイプとはどういうものか分かりません。
私は毎回stopPropagationを使用しますか?プロトタイプするevent.stopPropagation> = 8
この質問は役に立ちましたか?JavaScript Event prototype in IE8しかし、私は受け入れられた答えと、本質的に設定して忘れることができるプロトタイプとはどういうものか分かりません。
あなたはプレーンなJavaScriptで処理する独自のイベントをやっている場合、あなたはおそらくすでにクロスブラウザのルーチンを持っていますイベントハンドラを設定します。その関数に抽象化を置くことができます。ここで私が使用している一つだその模倣jQueryの機能(イベントハンドラはfalse
を返した場合、両方のstopPropagation()
とpreventDefault()
がトリガされているあなたは、明らかに、しかし、それを修正することができますが、それが動作するようにしたい:あなただけのことができ、
しますか、このようなユーティリティ機能を行います。
function stopPropagation(e) {
if(e.stopPropagation) {
e.stopPropagation();
} else {
e.returnValue = false;
}
}
そして、ちょうど代わりに、各機能のイベント上で動作する、その関数を呼び出すを
おそらくこの:
Event = Event || window.Event;
Event.prototype.stopPropagation = Event.prototype.stopPropagation || function() {
this.cancelBubble = true;
}
returnValue = false
がでpreventDefaultための類似体である:
Event.prototype.preventDefault = Event.prototype.preventDefault || function() {
this.returnValue = false;
}
私はポスターへのリンクを投稿してこの方法について言及しましたが、別の答えを受け入れました。彼はjsFiddle経由で動作していないと言います。だから私はこのメソッドに心配していた... – ryandlf
私たちは、これだけを使用することができます:event.cancelBubble = true
。
すべてのブラウザで動作確認済みです。
ちょうど私は明確です...あなたはfn.callを使用すると実際にイベントハンドラに渡された関数を起動していないですか?どのように、なぜそれが偽になるのか、私が理解しているのか分からないのですか?イベントハンドラがevent.stopPropagationを使用しない場合はどうなりますか? – ryandlf
もう一つだけ。私はリターン使用ブラケットを見たことがない。好奇心の外に、それはリターンretとは異なるものです; – ryandlf
@ryandlf - はいfn.callはカスタムイベントハンドラ関数( 'addEvent()'で渡されたイベントハンドラ関数を呼び出しています)特定のイベントの 'stopPropagation()'を実行するには、あなたのイベントハンドラ関数で 'return false'を返します。そうでない場合は、イベントハンドラ関数が伝播を停止するかどうかを決めることになります。これはjQueryが使用するモデルです – jfriend00