Maison > interface Web > js tutoriel > Pourquoi les scripts ajoutés via innerHTML ne s'exécutent-ils pas toujours et comment puis-je y remédier ?

Pourquoi les scripts ajoutés via innerHTML ne s'exécutent-ils pas toujours et comment puis-je y remédier ?

Patricia Arquette
Libérer: 2024-12-23 00:22:10
original
685 Les gens l'ont consulté

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

Des scripts peuvent-ils être incorporés à innerHTML ?

Insérer des scripts dans une page à l'aide de innerHTML dans un fichier

peut provoquer l'apparition des scripts dans le DOM sans exécution dans les navigateurs comme Firefox et Chrome. Cet article explore les raisons de ce comportement et propose une solution pour rendre ces scripts exécutables.

Le code HTML fourni dans l'exemple de code illustre la tentative d'exécution d'un script dans un fichier

en utilisant innerHTML. Cependant, le message d'alerte souhaité « salut » n'apparaît pas, indiquant l'échec de l'exécution du script.

Pour résoudre ce problème, nous présentons une méthode qui remplace de manière récursive tous les scripts non exécutables par des scripts exécutables. Cette méthode, connue sous le nom de nodeScriptReplace, parcourt l'arborescence DOM et identifie les éléments de script. Si un script non exécutable est rencontré, il clone le script, lui attribue un contenu exécutable et remplace l'élément de script d'origine, permettant ainsi son exécution.

De plus, la fonction nodeScriptClone crée un élément de script exécutable en extrayant le innerHTML du script non exécutable et la définition de ses attributs. Ces attributs sont transférés au nouveau script exécutable, garantissant un comportement correct.

La fonction nodeScriptIs vérifie si un nœud donné est un élément de script en examinant son nom de balise.

Pour exécuter le script et l'afficher l'alerte "salut", appelez simplement nodeScriptReplace sur l'élément racine de la page. L'extrait de code ci-dessous le démontre :

nodeScriptReplace(document.getElementsByTagName("body")[0]);
Copier après la connexion

Cette méthode fournit un mécanisme robuste pour exécuter des scripts ajoutés à une page à l'aide de innerHTML, garantissant ainsi leur fonctionnalité prévue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal