HTMLSlotElement: assignedNodes() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

assignedNodes() 方法是 HTMLSlotElement 接口的一部分,它返回分配给此插槽的节点序列。

如果将 flatten 选项设置为 true,则它返回分配给此插槽的节点序列,以及分配给此插槽后代的任何其他插槽的节点序列。如果没有找到分配的节点,则返回插槽的后备内容。

语法

js
assignedNodes()
assignedNodes(options)

参数

options 可选

一个对象,用于设置要返回的节点的选项。可用的选项包括:

flatten

一个布尔值,指示是否返回任何可用的子 <slot> 元素(true)的分配节点,或者不返回(false)。默认为 false

返回值

一个节点数组。

示例

以下代码片段取自我们的 slotchange 示例查看实时演示)。

js
let slots = this.shadowRoot.querySelectorAll("slot");
slots[1].addEventListener("slotchange", (e) => {
  let nodes = slots[1].assignedNodes();
  console.log(
    `Element in Slot "${slots[1].name}" changed to "${nodes[0].outerHTML}".`,
  );
});

在这里,我们获取所有插槽的引用,然后为模板中的第二个插槽添加一个 slotchange 事件监听器——在示例中,这个插槽的内容会不断变化。

每次插入到插槽中的元素发生变化时,我们都会向控制台记录一份报告,说明哪个插槽发生了变化,以及插槽内的新节点是什么。

规范

规范
HTML
# dom-slot-assignednodes-dev

浏览器兼容性