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 回答