有没有办法检测浏览器是否支持事件捕获以及事件冒泡?我检查了http://modernizr.com/,但在文档中看不到任何信息。检测事件捕获支持javascript
我认为IE9不支持事件捕获,但在其他浏览器中应该可以吗?
为了清楚起见,我想检测浏览器是否支持事件DOM模型的事件捕获阶段以及事件冒泡阶段。
有没有办法检测浏览器是否支持事件捕获以及事件冒泡?我检查了http://modernizr.com/,但在文档中看不到任何信息。检测事件捕获支持javascript
我认为IE9不支持事件捕获,但在其他浏览器中应该可以吗?
为了清楚起见,我想检测浏览器是否支持事件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中,隐藏)。
这里有一个fiddle包含上面的代码,让你开始。
[event.eventPhase'的文档](https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase),用于参考 – 2013-07-12 20:01:36
你是什么意思的“事件捕获”?每个浏览器自1998年以来支持*一些*事件。 – 2013-02-11 10:29:45
@Pekka I - 我认为他意味着DOM事件模型的捕获阶段(与气泡阶段相反,这是您最经常听取事件的地方)。 – 2013-02-11 10:31:13
是的我的意思是在事件冒泡阶段的事件捕获阶段 – dannym 2013-02-11 10:45:35