What does the third parameter (false) indicate in
document.addEventListener("deviceready",OnDeviceReady,false);
Can any one show an example script to show the difference
What does the third parameter (false) indicate in
document.addEventListener("deviceready",OnDeviceReady,false);
Can any one show an example script to show the difference
这是出于历史原因。最初设计浏览器事件系统时,有两种相互冲突的方式对其工作方式进行建模。它们被称为事件捕获和事件冒泡。
以这个 HTML 为例:
<html>
<body>
<a href="#">Content</a>
</body>
</html>
如果元素上发生事件(例如单击)a
,祖先元素是否应该知道?人们普遍认为他们应该这样做。但问题是应该按照什么顺序通知他们。Microsoft 和 Netscape 的开发人员(这应该让您了解我们所谈论的历史!)有不同的意见。
一种模型是事件捕获(由 Netscape 开发人员提倡)。这首先通知了html
元素并沿着树向下工作:
html
body
a
另一种模型是事件冒泡(由 Microsoft 开发人员提倡)。这首先通知了目标元素,然后沿着树向上工作:
a
body
html
最终的妥协是它应该两者都做。
html
(捕获阶段)body
(捕获阶段)a
(捕获阶段)a
(冒泡阶段)body
(冒泡阶段)html
(冒泡阶段)因此,该事件沿树向下运行,然后再次备份。
这是一种冗长的到达方式addEventListener
。addEventListener
监听捕获阶段和冒泡阶段事件。第三个参数(useCapture
在规范中调用)允许程序员指定他们想要使用的阶段。
在现代浏览器中,默认为false
. 您可能永远不会遇到想要使用捕获阶段的情况,尤其是在 Internet Explorer 仍然不支持它的情况下。但是旧的浏览器需要false
明确的,所以它通常是为了向后兼容而提供的。
它是useCapture:
如果
true
,useCapture
表示用户希望开始捕获。启动捕获后,所有指定类型的事件都将被分派给已注册的,然后再分派给DOM 树中它下面的listener
任何s。EventTarget
通过树向上冒泡的事件不会触发指定使用捕获的侦听器。有关详细说明,请参阅DOM 级别 3 事件 。