Saat saya sedang menulis beberapa JS dasar untuk melakukan manipulasi DOM dan mendengarkan acara, saya menemukan bug yang membuat saya bingung. Saya menghabiskan waktu mempelajari Stack Overflow, mencari solusi tanpa hasil. Untuk mereplikasi bug, saya akan menyajikan versi sederhana dari kode saya Show
Untuk memulai, saya memiliki file HTML sederhana dengan satu Dalam file JavaScript, saya menambahkan beberapa node ke DOM dan membuat event listener pada sebuah tombol Gunakan 'innerHTML' untuk manipulasi DOMDi browser, halaman saya muncul seperti yang diharapkan. Ada gambar, diikuti dengan tombol dan beberapa teks tambahan yang saya tambahkan ke DOM Konten di browser webDari sekilas kode, tombol memiliki tujuan yang jelas. Saat diklik, string Pertama, mari kita coba dan temukan di mana bug dimasukkan ke dalam kode. Untuk memulai, saya akan mengomentari baris Sekarang, ketika saya mengklik tombolnya, semuanya berfungsi seperti yang diharapkan. Setelah mengklik tombol, Jelas, baris dengan Menambahkan ke Saat Anda menggunakan operator append dengan
Sebagai efek samping alami dari alasan sebelumnya, reparsing membuat
Kesimpulan yang paling jelas dari percobaan singkat kami adalah
Penggunaan Anda dapat membaca di Metode yang Sesuai dengan W3C Dapat Menambahkan Elemen DOM Baru dengan Mudah Metode seperti Untuk pemula, Ringkasan. dalam tutorial ini, Anda akan mempelajari perbedaan antara #1) createElement lebih berkinerjaMisalkan Anda memiliki elemen
Anda dapat membuat elemen baru ke elemen _ Anda juga dapat memanipulasi HTML elemen secara langsung menggunakan
Menggunakan
Namun, menggunakan #2) createElement lebih amanSeperti yang disebutkan dalam tutorial innerHTML, Anda harus menggunakannya hanya jika data berasal dari sumber tepercaya seperti database Jika Anda menyetel konten yang tidak dapat Anda kendalikan ke innerHTML, kode berbahaya dapat diinjeksi dan dieksekusi #3) Menggunakan DocumentFragment untuk menyusun Node DOMDengan asumsi Anda memiliki daftar elemen dan Anda perlukan di setiap iterasi _ Kode ini menghasilkan perhitungan ulang gaya, lukisan, dan tata letak setiap iterasi. Ini sangat tidak efisien Untuk mengatasinya, Anda biasanya menggunakan _4 untuk menyusun simpul DOM dan menambahkannya ke pohon DOM _ Dalam contoh ini, kami menyusun simpul DOM dengan menggunakan objek 4 dan menambahkan fragmen ke pohon DOM aktif satu kali di akhir Fragmen dokumen tidak tertaut ke pohon DOM yang aktif, oleh karena itu, tidak menghasilkan kinerja apa pun Apa alternatif yang lebih baik untuk innerHTML?Oleh karena itu, disarankan agar Anda menggunakan innerHTML daripada innerHTML. Elemen. SetHTML() untuk membersihkan teks sebelum dimasukkan ke dalam DOM.
Mengapa Anda tidak harus menggunakan innerHTML?Salah satu risiko paling umum dalam menggunakan Node. innerHTML saat ini adalah skrip lintas situs (XSS), yang memungkinkan pengguna luar menambahkan skrip sisi klien berbahaya ke situs web yang akan dilihat oleh banyak pengguna .
Bagaimana saya bisa menambahkan HTML tanpa innerHTML?createElement dan appendChild. Salah satu cara menambahkan elemen turunan ke elemen penampung tanpa menyetel properti innerHTML adalah dengan menggunakan dokumen. metode createElement untuk membuat elemen. Kemudian kita bisa memanggil appendChild untuk menambahkan elemen.
Haruskah saya menggunakan innerHTML atau innerText?innerText mengembalikan semua teks yang dikandung oleh elemen dan semua elemen turunannya. innerHtml mengembalikan semua teks, termasuk tag html, yang dimuat oleh sebuah elemen . |