Rumah > hujung hadapan web > tutorial js > Mengapa Skrip Tidak Disisipkan dengan innerHTML Sentiasa Laksanakan dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Skrip Tidak Disisipkan dengan innerHTML Sentiasa Laksanakan dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-12-18 21:28:17
asal
180 orang telah melayarinya

Why Don't Scripts Inserted with innerHTML Always Execute, and How Can I Fix It?

Melaksanakan Skrip yang Disisipkan dengan innerHTML

Memasukkan skrip ke dalam halaman web menggunakan innerHTML boleh menjadi satu cabaran, kerana skrip mungkin muncul dalam DOM tetapi gagal dilaksanakan. Ini disebabkan oleh cara penyemak imbas yang berbeza mengendalikan pelaksanaan skrip apabila ia ditambahkan secara dinamik pada halaman.

Untuk mengatasinya, satu kaedah melibatkan pencarian secara rekursif DOM untuk elemen skrip dan menggantikannya dengan klon boleh laku. Berikut ialah penjelasan langkah demi langkah bagi fungsi penggantian skrip rekursif:

function nodeScriptReplace(node) {
Salin selepas log masuk
  • Fungsi ini mengambil nod sebagai hujah dan menyemak sama ada ia adalah elemen skrip (iaitu, tagNamenya ialah ' SCRIPT').
  • Jika ia adalah elemen skrip, ia menggantikannya dengan klon yang mengandungi kod yang sama (dicapai melalui nodeScriptClone()).
  • Jika ia bukan elemen skrip, ia mencari secara rekursif anak nod untuk sebarang elemen skrip.
function nodeScriptClone(node) {
Salin selepas log masuk
  • Fungsi ini mencipta yang baharu elemen skrip dengan teksnya (kod) sepadan dengan kod nod skrip asal.
  • Ia juga menyalin semua atribut daripada yang asal nod kepada klon untuk mengekalkan sebarang tetapan seperti atribut 'src'.
function nodeScriptIs(node) {
Salin selepas log masuk
  • Fungsi ini bertindak sebagai pembantu untuk menentukan sama ada nod ialah elemen skrip dengan menyemak tagNamenya.

Contoh Penggunaan:

Untuk melaksanakan skrip yang dimasukkan dengan innerHTML, panggil fungsi nodeScriptReplace() pada badan dokumen (atau mana-mana bekas lain yang dikehendaki).

nodeScriptReplace(document.getElementsByTagName("body")[0]);
Salin selepas log masuk

Dengan menggunakan pendekatan rekursif ini, semua elemen skrip yang ditemui semasa proses carian akan menjadi digantikan dengan klon boleh laku, memastikan pelaksanaan skrip yang betul apabila disisipkan dengan innerHTML.

Atas ialah kandungan terperinci Mengapa Skrip Tidak Disisipkan dengan innerHTML Sentiasa Laksanakan dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan