Event.composedPath() - Web API 接口参考 编辑

 composedPath() 是 Event 接口的一个方法,当对象数组调用该侦听器时返回事件路径。 如果影子根节点被创建并且ShadowRoot.mode是关闭的,那么该路径不包括影子树中的节点。

语法

var composed = Event.composedPath();

参数

无.

返回值

一个 EventTarget对象数组,表示将在其上调用事件侦听器的对象。

例子

在我们的 composed-composed-path 例子中,我们定义了两个自定义元素,<open-shadow> 和 <closed-shadow>,两 个全都调用了它们文本属性的内容然后作为<p>  元素的文本内容将它们插入到元素的影子DOM中。两者之间唯一的区别是它们影子的根结点是在它们的模式被分别设置成open 和 closed 的情况下连接的。

第一个定义就像这样, 比如:

customElements.define('open-shadow',
  class extends HTMLElement {
    constructor() {
      super();

      let pElem = document.createElement('p');
      pElem.textContent = this.getAttribute('text');

      let shadowRoot = this.attachShadow({mode: 'open'})
        .appendChild(pElem);

  }
});

然后我们在我们的页面中插入其中一个元素:

<open-shadow text="I have an open shadow root"></open-shadow>
<closed-shadow text="I have a closed shadow root"></closed-shadow>

然后在 <html> 元素中插入一个鼠标点击事件:

document.querySelector('html').addEventListener('click',function(e) {
  console.log(e.composed);
  console.log(e.composedPath());
});

当你先后点击 <open-shadow> 和 <closed-shadow> 这两个元素, 你将会注意到两件事情. 第一, composed 这个属性返回值为 true 因为 click 事件总能够在影子边界中传播。 第二,你将注意到两个元素中composedPath 的值的不同。 <open-shadow> 元素的组成路径是这个:

Array [ p, ShadowRoot, open-shadow, body, html, HTMLDocument https://mdn.github.io/web-components-examples/composed-composed-path/, Window ]

尽管 <closed-shadow> 元素的组成路径是像下面这样:

Array [ closed-shadow, body, html, HTMLDocument https://mdn.github.io/web-components-examples/composed-composed-path/, Window ]

在第二个例子中,事件监听器仅能够传播到 <closed-shadow> 元素本身,但是不会到影子边界内的节点。

规范

规格状态评语
DOM
composedPath()
Living Standard

浏览器兼容

BCD tables only load in the browser

这个页面的兼容表是从结构化的数据中制作出来的。如果你想为数据做贡献,请点击 https://github.com/mdn/browser-compat-data 然后发送一个 pull 请求.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:118 次

字数:4419

最后编辑:6 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文