检测事件捕获支持javascript

时间:2013-02-11 10:28:07

标签: javascript modernizr

有没有办法检测浏览器是否支持事件捕获以及事件冒泡?我已经检查了http://modernizr.com/,但在文档中看不到任何信息。

我认为IE< 9不支持事件捕获,但在其他浏览器中它应该可以吗?

为清楚起见,我想检测浏览器是否支持事件DOM模型的事件捕获阶段以及事件冒泡阶段。

1 个答案:

答案 0 :(得分: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中) ,隐藏)。

这是一个fiddle,其中包含上述代码,可帮助您入门。