我已阅读https://developer.mozilla.org/en/DOM/element.addEventListener上的文章,但无法理解useCapture
属性。定义有:
如果为true,则useCapture指示用户希望启动捕获。启动捕获后,所有指定类型的事件都将分派给注册的侦听器,然后才分派给DOM树中其下的任何EventTarget。在树中冒泡的事件不会触发指定使用捕获的侦听器。
在此代码中,parent事件在child之前触发,因此我无法理解其行为。Document对象的usecapture为true,child div的usecapture设置为false,并且遵循了useuseture的文档。因此为什么document属性优先于child。
function load() {
document.addEventListener("click", function() {
alert("parent event");
}, true);
document.getElementById("div1").addEventListener("click", function() {
alert("child event");
}, false);
}
<body onload="load()">
<div id="div1">click me</div>
</body>
no specification is made as to the order in which they will receive the event with regards to the other EventListeners on the EventTarget
。我尚未测试所有浏览器,因此它们可能只是碰巧以相同的方式实现。但是,捕获事件将在非捕获事件之前完成。