Пользовательский элемент с теневым DOM, который прослушивает события на себе, будет (может?) Перенаправлять свои события, если эти события читаются из setTimeout
:
<script>
class Widget extends HTMLElement {
constructor() {
super();
this.attachShadowDom();
this.registerListener();
}
attachShadowDom() {
let shadow = this.attachShadow({mode: 'open'});
let templateClone = document.querySelector("#widget-template").content.cloneNode(true);
shadow.appendChild(templateClone);
}
registerListener() {
this.shadowRoot.querySelector("#my-input").addEventListener("input", (event) => {
console.log(event.target);
setTimeout(() => console.log(event.target), 0);
});
}
}
document.addEventListener("DOMContentLoaded", () => {
customElements.define("my-widget", Widget);
});
</script>
<html>
<my-widget></my-widget>
</html>
<template id="widget-template">
<input type="text" id="my-input">
</template>
Каждый символ, введенный вэлемент input
, указанный выше, регистрирует на консоли две отдельные цели событий: элемент input
и элемент my-widget
. Мне интересно, если это по замыслу?