1

ブラウザーがイベント キャプチャとイベント バブリングをサポートしているかどうかを検出する方法はありますか? http://modernizr.com/を確認しましたが、ドキュメントに情報がありません。

IE < 9 はイベント キャプチャをサポートしていませんが、他のブラウザでは問題ないと考えているのは正しいですか?

わかりやすくするために、ブラウザーがイベント DOM モデルのイベント キャプチャ フェーズとイベント バブル フェーズをサポートしているかどうかを検出したいと思います。

4

1 に答える 1

1

これにはもっと良いアプローチがあるかもしれませんが、これが私が最初に思いついたものです。要素を作成し、キャプチャフェーズでイベントハンドラーをその要素にバインドし、その要素でイベントを発生させeventPhase、イベントハンドラーでプロパティを確認する必要があります。

var button = document.getElementById("example");

document.addEventListener("click", function (e) {
    console.log(e.eventPhase); // 1 === capture, 2 === target, 3 === bubble
}, true);

evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
button.dispatchEvent(evt);

おそらく、他のあらゆる種類のチェック(dispatchEventサポートなど)を追加する必要があり、実際にbuttonコード内に要素を作成する必要があります(そして、非表示にしてDOMに挿入します)。

これがあなたが始めるための上記のコードを含むフィドルです。

于 2013-02-11T10:53:46.607 に答える