JavaScript ShadowRoot.mode — відкритий чи закритий режим тіні
Властивість mode повертає режим тіні: open або closed.
Загальний опис
У режимі open тінь доступна ззовні через element.shadowRoot. У closed ця властивість дає null — навіть твоєму власному коду.
Звабливо подумати, що closed — це захист. Це не так: посилання на тінь однаково є всередині компонента, і його легко витягти. Захисту не додається, а от налагодження й тестування ускладнюються по-справжньому.
Тому в реальних проєктах беруть open майже завжди.
- Нотатка
-
автор: NagarDclosedне захищає — це лише незручність. Хто справді хоче дістатись до тіні, дістанеться; страждатимуть тільки твої власні тести.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| mode | 53+ | 63+ | 10+ | 40+ | 79+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| mode | 53+ | yes | yes | 10+ |
Приклади
+ запропонувати свій приклад у пісочниці
open видно ззовні, closed — ні (але це не захист).
const openHost = document.createElement('div');
const open = openHost.attachShadow({ mode: 'open' });
console.log(open.mode); // 'open'
console.log(openHost.shadowRoot); // ShadowRoot
const closedHost = document.createElement('div');
const closed = closedHost.attachShadow({ mode: 'closed' });
console.log(closed.mode); // 'closed'
console.log(closedHost.shadowRoot); // null — навіть для нас
Коментарі
Коментарів ще немає — будьте першим!