第三个参数(false)在document.addEventListener(“deviceready”,OnDeviceReady,false)中表示什么;
2022-08-30 04:48:11
第三个参数 (false) 表示什么
document.addEventListener("deviceready",OnDeviceReady,false);
任何人都可以显示示例脚本以显示差异吗?
第三个参数 (false) 表示什么
document.addEventListener("deviceready",OnDeviceReady,false);
任何人都可以显示示例脚本以显示差异吗?
这是有历史原因的。当浏览器事件系统最初被设计出来时,有两种相互矛盾的建模方式。它们被称为事件捕获和事件冒泡。
以这个 HTML 为例:
<html>
<body>
<a href="#">Content</a>
</body>
</html>
如果元素上发生事件(例如点击),祖先元素应该知道吗?人们普遍认为,他们应该这样做。但问题是应该以什么顺序通知他们。微软和Netscape的开发人员(这应该让你了解我们谈论的历史程度!)有不同的意见。a
一种模式是事件捕获(由Netscape开发人员倡导)。这会首先通知该元素,然后沿着树向下工作:html
html
body
a
另一种模式是事件冒泡(由微软开发人员倡导)。这首先通知了目标元素,并在树上向上移动:
a
body
html
最终的妥协是,它应该同时做这两件事。
html
(捕获阶段)body
(捕获阶段)a
(捕获阶段)a
(冒泡阶段)body
(起泡阶段)html
(冒泡阶段)因此,该事件沿着树向下工作,然后再次返回。
这是一种长篇大论的方式。 侦听捕获阶段和冒泡阶段事件。第三个参数(在规范中称为 useCapture
)允许程序员指定他们想要使用的阶段。addEventListener
addEventListener
在现代浏览器中,此值默认为 。您可能永远不会遇到想要使用捕获阶段的情况,尤其是在Internet Explorer仍然不支持它的情况下。但是旧的浏览器需要是显式的,因此通常提供它以实现向后兼容性。false
false
它的用途捕获:
如果 为,则表示用户希望启动捕获。启动捕获后,指定类型的所有事件都将分派给已注册的事件,然后再分派到 DOM 树中其下方的任何 事件。通过树向上冒泡的事件不会触发指定使用 capture 的侦听器。有关详细说明,请参阅 DOM 级别 3 事件。
true
useCapture
listener
EventTarget