第三个参数(false)在中表示什么
document.addEventListener("deviceready",OnDeviceReady,false);
有没有人能给出一个示例脚本来说明不同之处
发布于 2013-07-10 15:02:34
如果为true
,则为
,则为
useCapture
,表示用户希望启动捕获。在初始化捕获之后,所有指定类型的事件都将被调度到已注册的listener
,然后再调度到DOM树中它下面的任何EventTarget
。在树中向上冒泡的事件将不会触发指定为使用捕获的侦听器。有关详细解释,请参阅DOM Level 3 Events。
发布于 2013-07-10 15:13:01
这是出于历史原因。在最初设计浏览器事件系统时,有两种相互冲突的建模方式。它们被称为事件捕获和事件冒泡。
以下面的HTML为例:
<html>
<body>
<a href="#">Content</a>
</body>
</html>
如果在a
元素上发生事件(例如单击),祖先元素应该知道吗?人们普遍认为他们应该这样做。但问题是应该以什么顺序通知他们。Microsoft和Netscape开发人员(这应该会让您对我们正在谈论的历史有多大的了解!)有不同的意见。
一种模型是事件捕获(由Netscape开发人员倡导)。这首先通知了html
元素,并沿着树向下工作:
html
body
a
另一种模型是事件冒泡(由微软开发人员倡导)。这首先通知了目标元素,然后在树中向上移动:
a
body
html
最终的妥协是,它应该同时做这两件事。
html
(capture phase)body
(capture phase)a
(capture phase)a
(冒泡阶段)(冒泡phase)body
(冒泡阶段)因此,该事件沿树向下运行,然后再次返回。
这是一种冗长的到达addEventListener
的方法。addEventListener
监听捕获阶段和冒泡阶段事件。第三个参数(在规范中称为useCapture
)允许程序员指定他们想要使用的阶段。
在现代浏览器中,缺省为false
。您可能永远不会遇到需要使用捕获阶段的情况,尤其是在Internet Explorer仍然不支持捕获阶段的情况下。但是旧的浏览器需要显式的false
,所以它通常是为了向后兼容而提供的。
https://stackoverflow.com/questions/17564323
复制相似问题