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

Mengapa Skrip Tidak Ditambah melalui innerHTML Sentiasa Laksanakan dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-23 00:22:10
asal
691 orang telah melayarinya

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

Bolehkah Skrip Digabungkan dengan innerHTML?

Memasukkan skrip ke dalam halaman menggunakan innerHTML ke

boleh menyebabkan skrip muncul dalam DOM tanpa pelaksanaan dalam penyemak imbas seperti Firefox dan Chrome. Artikel ini meneroka sebab di sebalik tingkah laku ini dan menyediakan penyelesaian untuk menjadikan skrip tersebut boleh dilaksanakan.

HTML yang disediakan dalam kod sampel menunjukkan percubaan pelaksanaan skrip dalam

menggunakan innerHTML. Walau bagaimanapun, mesej makluman yang dikehendaki "hai" tidak muncul, menunjukkan kegagalan skrip untuk dijalankan.

Untuk menangani isu ini, kami membentangkan kaedah yang menggantikan semua skrip tidak boleh laku secara rekursif dengan skrip boleh laku. Kaedah ini, yang dikenali sebagai nodeScriptReplace, merentasi pepohon DOM dan mengenal pasti elemen skrip. Jika skrip tidak boleh laku ditemui, ia mengklonkan skrip, menetapkan kandungan boleh laku dan menggantikan elemen skrip asal, membolehkannya dilaksanakan.

Selain itu, fungsi nodeScriptClone mencipta elemen skrip boleh laku dengan mengekstrak innerHTML skrip tidak boleh laku dan menetapkan atributnya. Atribut ini dipindahkan ke skrip boleh laku baharu, memastikan kelakuan yang betul.

Fungsi nodeScriptIs menyemak sama ada nod yang diberikan ialah elemen skrip dengan memeriksa nama tegnya.

Untuk melaksanakan skrip dan paparan amaran "hai", hanya panggil nodeScriptReplace pada elemen akar halaman. Coretan kod di bawah menunjukkan perkara ini:

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

Kaedah ini menyediakan mekanisme yang teguh untuk melaksanakan skrip yang ditambahkan pada halaman menggunakan innerHTML, memastikan kefungsian yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Skrip Tidak Ditambah melalui 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