Maison > interface Web > js tutoriel > Comment puis-je m'assurer que les scripts s'exécutent lors de l'utilisation de « innerHTML » en JavaScript ?

Comment puis-je m'assurer que les scripts s'exécutent lors de l'utilisation de « innerHTML » en JavaScript ?

Linda Hamilton
Libérer: 2024-12-11 10:55:10
original
871 Les gens l'ont consulté

How Can I Ensure Scripts Execute When Using `innerHTML` in JavaScript?

Exécution de scripts insérés avec .innerHTML

L'insertion de contenu dans un élément à l'aide de innerHTML peut rencontrer des problèmes où les scripts contenus dans le contenu inséré ne s'exécutent pas. Bien qu'il existe des solutions utilisant jQuery ou eval, voici un extrait de code qui résout ce problème en utilisant du JavaScript pur :

function setInnerHTML(elm, html) {
  elm.innerHTML = html;

  Array.from(elm.querySelectorAll("script"))
    .forEach(oldScriptEl => {
      const newScriptEl = document.createElement("script");

      Array.from(oldScriptEl.attributes).forEach(attr => {
        newScriptEl.setAttribute(attr.name, attr.value);
      });

      const scriptText = document.createTextNode(oldScriptEl.innerHTML);
      newScriptEl.appendChild(scriptText);

      oldScriptEl.parentNode.replaceChild(newScriptEl, oldScriptEl);
  });
}
Copier après la connexion

Cette fonction prend un élément et une chaîne HTML comme paramètres. Il remplace le innerHTML de l'élément par la chaîne fournie et parcourt tous les éléments de script du HTML. Pour chaque élément de script, il en crée un nouveau avec les mêmes attributs et le même texte de script. Enfin, il remplace l'ancien élément de script par le nouveau.

Pour utiliser cette fonction, définissez simplement le innerHTML d'un élément :

.innerHTML = HTML;    // does *NOT* run <script> tags in HTML
setInnerHTML(, HTML); // does run <script> tags in HTML
Copier après la connexion

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