ShadowRoot: свойство slotAssignment
Базовая версия 2023
Новое свойство
С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Только для чтения slotAssignment свойство интерфейса ShadowRoot возвращает режим назначения слотов для дерева тенистого DOM. Узлы могут быть назначены автоматически (named) или вручную (manual). Значение этого свойства определяется с помощью опции slotAssignment при вызове Element.attachShadow().
Значение
Строка, которая может быть одной из следующих:
named-
Элементы автоматически назначаются элементам
<slot>внутри этого тенистого корня. Любые дочерние элементы узла-хоста с атрибутомslot, который соответствует атрибутуnameэлемента<slot>внутри этого тенистого корня, будут назначены этому слоту. Любые дочерние элементы узла-хоста без атрибутаslotбудут назначены элементу<slot>без атрибутаname(«слоту по умолчанию»), если он присутствует. manual-
Элементы не назначаются автоматически элементам
<slot>. Вместо этого их необходимо вручную назначить с помощьюHTMLSlotElement.assign().
Примеры
В примере ниже метод assign() используется для отображения правильной вкладки в приложении с вкладками. Функция вызывается и получает панель для отображения, которая затем назначается слоту. Мы проверяем, что slotAssignment имеет значение named, чтобы предотвратить исключение при вызове HTMLSlotElement.assign().
function UpdateDisplayTab(elem, tabIdx) {
const shadow = elem.shadowRoot;
// This test is usually not needed, but can be useful when debugging
if (shadow.slotAssignment === "named") {
console.error(
"Trying to manually assign a slot on an automatically-assigned (named) slot",
);
}
const slot = shadow.querySelector("slot");
const panels = elem.querySelectorAll("tab-panel");
if (panels.length && tabIdx && tabIdx <= panels.length) {
slot.assign(panels[tabIdx - 1]);
} else {
slot.assign();
}
}
Спецификации
| Спецификация |
|---|
| DOM # dom-shadowroot-slotassignment |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
slotAssignment |
86 | 86 | 92 | 72 | 16.4 | 86 | 92 | 61 | 16.4 | 14.0 | 86 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/slotAssignment