ShadowRoot: mode 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

ShadowRootmode 只讀屬性指定了它的模式——openclosed。這定義了該 shadow root 的內部特性是否可以從 JavaScript 訪問。

當 shadow root 的 mode"closed" 時,shadow root 的實現細節對於 JavaScript 是不可訪問且不可更改的——這與例如 <video> 元素的實現細節對於 JavaScript 不可訪問且不可更改的方式相同。

該屬性值是使用傳遞給 Element.attachShadow() 方法的物件的 mode 屬性設定的,或者在使用宣告方式建立 shadow root 時,使用 <template> 元素的 shadowrootmode 屬性設定的。

一個字串值,可以取以下值之一:

open

shadow root 的元素可以從 root 外部的 JavaScript 訪問。

closed

closed shadow tree 內部的節點無法從 root 外部的 JavaScript 訪問。

示例

js
// We create a closed shadow root, that is not accessible
let element = document.createElement("div");
element.attachShadow({ mode: "closed" });
console.log(element.shadowRoot); // logs null as the shadow root is closed

// We create an open shadow root, that is accessible
let element2 = document.createElement("div");
element2.attachShadow({ mode: "open" });
console.log(`The shadow is ${element2.shadowRoot.mode}`); // logs "The shadow is open"
element2.shadowRoot.textContent = "Opened shadow"; // The shadow is open, we can access it from outside

規範

規範
DOM
# dom-shadowroot-mode

瀏覽器相容性