1

私はブラウザ拡張機能で作業しています。Google 検索ページのリンクの横にいくつかのアイコンを配置しています。これらのアイコンはいくつかのアクションをトリガーし、ユーザーがクリックした後にバブル イベントを停止する必要があります。履歴書では、親 div タグはこれらのアイコンのクリックについて認識してはなりません。

次のコードは、すべてのブラウザーでバブル停止イベントを許可します。

if (event.cancelBubble) {
        event.cancelBubble = true;
}
if (event.returnValue) {
        event.returnValue = false;
}
if (event.stopPropagation) {
        event.stopPropagation();
}
if (event.preventDefault) {
        event.preventDefault();
}

Firefox では問題なく動作しますが、このコンテキストでは IE (少なくともバージョン 8) では動作しません。それについて何か考えはありますか?

4

2 に答える 2

2
if (event.cancelBubble) {
        event.cancelBubble = true;
}

これは意味がありません。すでに true と評価されている場合にのみtrue(ブール値のコンテキストで) に設定します。if 句を取り除きます (つまり、常に無条件に設定します)。存在しない値を設定しても、通常は何の害もありません (醜い実装を持つホスト オブジェクトに設定している場合を除きます)。

于 2011-01-26T22:50:57.297 に答える
0

または、falseに設定してみてください。trueを使用すると、イベントは、イベントが発生した後に来るコードを起動します。イベントにブール値がある場合、uがそのイベントを制御する自由があることを意味する場合があります。 trueと言うと、イベントは他の関数を実行する可能性があります。falseと言うと、イベントは他の関数を実行しませんが、それはその関数の方法にのみ依存します。

コーダーは彼の機能/コードを作りました。

しかし、簡単に言うと、「バブルイベントを処理または発生させるには、コントロールがOnBubbleEventメソッドをオーバーライドする必要があります。」ということです。

これをまだ読んでいない場合はhttp://msdn.microsoft.com/en-us/library/aa719644(v=vs.71).aspxで、私が言ったように反対のことをしてください。

; )。

これがあなたを少し助けてくれることを願っています

後で!

于 2011-01-26T23:05:01.993 に答える