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

瀏覽器相容性