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 ,所以通常是为了向后兼容。