第三个参数(false)在
中表示什么document.addEventListener("deviceready",OnDeviceReady,false);
任何人都可以显示示例脚本来显示差异
答案 0 :(得分:282)
这是出于历史原因。当浏览器事件系统首次设计时,有两种相互矛盾的方式来建模它的工作方式。它们被称为事件捕获和事件冒泡。
例如,这个HTML:
<html>
<body>
<a href="#">Content</a>
</body>
</html>
如果a
元素上发生了一个事件(例如点击),那么祖先元素是否应该知道?人们普遍认为他们应该这样做。但问题是以什么顺序应该通知他们。微软和Netscape的开发人员(这应该会让你对我们正在谈论的历史记录!)有不同的看法。
一个模型是事件捕获(由Netscape开发人员提倡)。这首先通知了html
元素,并在树下工作:
html
body
a
另一个模型是事件冒泡(由Microsoft开发人员提倡)。这首先通知了目标元素,并在树上工作:
a
body
html
最终的妥协是它应该两者。
html
(捕获阶段)body
(捕获阶段)a
(捕获阶段)a
(冒泡阶段)body
(气泡阶段)html
(冒泡阶段)所以事件在树上运行,然后再次备份。
这是一个漫长的方式来到addEventListener
。 addEventListener
侦听捕获阶段和冒泡阶段事件。第三个参数(在规范中称为useCapture
)允许程序员指定他们想要使用哪个阶段。
在现代浏览器中,默认为false
。您可能永远不会遇到想要使用捕获阶段的情况,尤其是因为Internet Explorer仍然不支持它。但旧浏览器需要false
是明确的,因此通常提供向后兼容性。
答案 1 :(得分:11)
这是useCapture:
如果
true
,useCapture
表示用户希望 发起捕获。启动后 捕获,指定的所有事件 类型将被发送到 在被记录之前注册listener
发送到下面的任何EventTarget
它在DOM树中。事件是 向上冒泡通过树会 不会触发指定的侦听器 使用捕获。见DOM Level 3 Events 有详细解释。