2013-02-11 95 views
1

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

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

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

+1

你是什么意思的“事件捕获”?每个浏览器自1998年以来支持*一些*事件。 – 2013-02-11 10:29:45

+3

@Pekka I - 我认为他意味着DOM事件模型的捕获阶段(与气泡阶段相反,这是您最经常听取事件的地方)。 – 2013-02-11 10:31:13

+0

是的我的意思是在事件冒泡阶段的事件捕获阶段 – dannym 2013-02-11 10:45:35

回答

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包含上面的代码,让你开始。

+0

[event.eventPhase'的文档](https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase),用于参考 – 2013-07-12 20:01:36