Rumah > Soal Jawab > teks badan
P粉0943518782023-09-05 00:37:47
Buka tag pada <editable-h1>
上触发connectedCallback
acara
Jadi Hello World
innerHTML anda belum dihuraikan lagi
Untuk menunggu sehingga penghuraian selesai sebelum melaksanakan, gunakan setTimeout
NOTA: Semua disediakan parsedCallback
的工具和库都会在底层使用类似的技巧,使用requestAnimationFrame
或MutationObserver
(dan lebih banyak baris kod).
Jika anda rasa satu baris setTimeout
是一个hack,或者你不想使用setTimeout
adalah satu penggodaman, atau anda tidak mahu membazirkan milisaat itu menggunakan , anda boleh menyemak Kod elemen html-parsed-elemen Andrea Giammarchi
Dan ikuti pakar WC, perbincangan ini diteruskan:
Memerlukan fungsi panggil balik untuk dilaksanakan selepas elemen anak berubah atau penghuraian selesai
https://github.com/WICG/webcomponents/issues/809
Semua kaedah bermuara kepada matlamat yang sama: Tunggu sehingga gelung acara kosong
Apakah gelung acara? https://www.youtube.com/watch?v=8aGhZQkoFbQ
customElements.define("editable-h1", class extends HTMLElement { connectedCallback() { setTimeout(() => { this.innerHTML = `<h1>${this.innerHTML}</h1><button>Edit</button>`; let h1 = this.querySelector("h1"); let button = this.querySelector("button"); button.onclick = (evt) => { button.innerHTML = (h1.contentEditable = !h1.isContentEditable) ? (h1.focus(),"Save") : "Edit"; } }); } });
<editable-h1>Hello World!</editable-h1> <editable-h1>Hello Web Components World!</editable-h1>🎜