document.addEventListener(“deviceready”,OnDeviceReady,false)中的第三个参数(false)是什么意思?
第三个参数(false)表示什么?
document.addEventListener("deviceready",OnDeviceReady,false);
任何人都可以显示一个示例脚本来显示不同之处
这是useCapture :
如果为
true
,则useCapture
表示用户希望启动捕获。 启动捕获后,指定types的所有事件将被分派到注册的listener
然后被分派到DOM树下的任何EventTarget
。 在树中冒泡的事件不会触发指定使用捕获的侦听器。 有关详细说明,请参阅DOM Level 3事件 。
这是历史原因。 当浏览器事件系统最初devise时,有两种相互冲突的方式来build模它的工作方式。 他们被称为事件捕获和事件冒泡。
举个例子,这个HTML:
<html> <body> <a href="#">Content</a> </body> </html>
如果一个事件(如点击)发生在a
元素上,祖先元素是否应该知道? 它们应该被广泛接受。 但问题是按什么顺序通知他们。 微软和网景开发者(这应该给你一个关于我们谈论多么历史的想法!)有不同的意见。
一个模型是事件捕获(由Netscape开发人员提倡)。 这首先通知了html
元素,并沿着树的方向前进:
-
html
-
body
-
a
另一种模式是事件冒泡(由微软开发者主张)。 这首先通知了目标元素,并在树上工作:
-
a
-
body
-
html
最终的妥协是它应该同时做到这一点 。
-
html
(捕获阶段) -
body
(捕捉阶段) - (捕获阶段)
- (冒泡阶段)
-
body
(冒泡阶段) -
html
(冒泡阶段)
所以这个事件会沿着树的方向走下去,然后再回来。
这是获取添加addEventListener
的冗长方式。 addEventListener
侦听捕获阶段和冒泡阶段事件。 第三个参数(在规范中称为useCapture
)允许程序员指定他们想要使用的阶段。
在现代浏览器中,这个默认为false
。 您可能永远不会遇到您想要使用捕获阶段的情况,特别是因为Internet Explorer仍然不支持它。 但是旧的浏览器需要明确的false
,所以通常是为了向后兼容。