有没有办法检测浏览器是否支持事件捕获以及事件冒泡?我检查了http://modernizr.com/但在文档中看不到任何信息。
我认为 IE < 9 不支持事件捕获但在其他浏览器中应该可以吗?
为了清楚起见,我想检测浏览器是否支持事件 DOM 模型的事件捕获阶段以及事件冒泡阶段。
有没有办法检测浏览器是否支持事件捕获以及事件冒泡?我检查了http://modernizr.com/但在文档中看不到任何信息。
我认为 IE < 9 不支持事件捕获但在其他浏览器中应该可以吗?
为了清楚起见,我想检测浏览器是否支持事件 DOM 模型的事件捕获阶段以及事件冒泡阶段。
可能有更好的方法,但这是我想出的第一件事。您需要创建一个元素,在捕获阶段将一个事件处理程序绑定到它,在其上触发一个事件,并检查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 中,隐藏)。
这是一个包含上述代码的小提琴,可以帮助您入门。