Кратко
СкопированоМетод composed
возвращает массив объектов Event
, через которые будет распространяться событие. В массив не включаются узлы из закрытых Shadow DOM.
Пример
СкопированоcustomElements.define('open-shadow', class extends HTMLElement { constructor() { super(); const p = document.createElement('p'); p.textContent = this.getAttribute('text'); const shadow = this.attachShadow({ mode: 'open' }); shadow.appendChild(p); }});customElements.define('closed-shadow', class extends HTMLElement { constructor() { super(); const p = document.createElement('p'); p.textContent = this.getAttribute('text'); const shadow = this.attachShadow({ mode: 'closed' }); shadow.appendChild(p); }});document.addEventListener('click', (e) => { console.log('composedPath:', e.composedPath());});
customElements.define('open-shadow', class extends HTMLElement { constructor() { super(); const p = document.createElement('p'); p.textContent = this.getAttribute('text'); const shadow = this.attachShadow({ mode: 'open' }); shadow.appendChild(p); } }); customElements.define('closed-shadow', class extends HTMLElement { constructor() { super(); const p = document.createElement('p'); p.textContent = this.getAttribute('text'); const shadow = this.attachShadow({ mode: 'closed' }); shadow.appendChild(p); } }); document.addEventListener('click', (e) => { console.log('composedPath:', e.composedPath()); });
<open-shadow text="Открытый Shadow DOM"></open-shadow><closed-shadow text="Закрытый Shadow DOM"></closed-shadow>
<open-shadow text="Открытый Shadow DOM"></open-shadow> <closed-shadow text="Закрытый Shadow DOM"></closed-shadow>
Как пишется
Скопированоevent.composedPath()
event.composedPath()
Метод не принимает параметров и возвращает массив объектов Event
.
Как понять
СкопированоМетод composed
показывает полный путь распространения события от целевого элемента до корня документа:
- Открытый Shadow DOM: Включает все узлы, включая элементы внутри Shadow DOM
- Закрытый Shadow DOM: Исключает узлы из закрытого Shadow DOM
Путь всегда начинается с целевого элемента и заканчивается Window
.
Подсказки
Скопировано💡 Метод работает только с событиями, которые имеют composed
.
💡 Используйте composed
для отладки распространения событий в сложных компонентах.
💡 Для закрытого Shadow DOM путь будет: [кастомный
.
💡 Для открытого Shadow DOM путь будет: [элемент
.
- Chrome 53, поддерживается
- Edge 79, поддерживается
- Firefox 63, поддерживается
- Safari 10, поддерживается