首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >第三个参数(false)在document.addEventListener("deviceready",OnDeviceReady,false)中表示什么;

第三个参数(false)在document.addEventListener("deviceready",OnDeviceReady,false)中表示什么;
EN

Stack Overflow用户
提问于 2013-07-10 15:01:21
回答 2查看 39.6K关注 0票数 118

第三个参数(false)在中表示什么

代码语言:javascript
复制
document.addEventListener("deviceready",OnDeviceReady,false);

有没有人能给出一个示例脚本来说明不同之处

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-10 15:02:34

我是useCapture

如果为true,则为

,则为useCapture,表示用户希望启动捕获。在初始化捕获之后,所有指定类型的事件都将被调度到已注册的listener,然后再调度到DOM树中它下面的任何EventTarget。在树中向上冒泡的事件将不会触发指定为使用捕获的侦听器。有关详细解释,请参阅DOM Level 3 Events

票数 18
EN

Stack Overflow用户

发布于 2013-07-10 15:13:01

这是出于历史原因。在最初设计浏览器事件系统时,有两种相互冲突的建模方式。它们被称为事件捕获和事件冒泡。

以下面的HTML为例:

代码语言:javascript
复制
<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,所以它通常是为了向后兼容而提供的。

票数 426
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17564323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档