Heim > Web-Frontend > js-Tutorial > Warum werden Skripte in innerHTML nicht ausgeführt und wie kann ich das Problem beheben?

Warum werden Skripte in innerHTML nicht ausgeführt und wie kann ich das Problem beheben?

Linda Hamilton
Freigeben: 2024-12-20 12:43:17
Original
887 Leute haben es durchsucht

Why Don't Scripts in innerHTML Execute, and How Can I Fix It?

Wie führe ich mit innerHTML eingefügte Skripte aus?

Wenn innerHTML zum Einfügen von Inhalten in ein Element verwendet wird, sind im Inhalt enthaltene Skripte möglicherweise nicht enthalten automatisch ausgeführt. Dies liegt daran, dass Browser Skripte nicht auswerten, nachdem sie mit innerHTML eingefügt wurden.

Lösung:

Um dieses Problem zu beheben, können Sie JavaScript verwenden, um jedes Skriptelement neu zu erstellen manuell und ersetzen Sie die ursprünglichen Skript-Tags im DOM. Hier ist eine Lösung in ES6:

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);
    });
}
Nach dem Login kopieren

Verwendung:

.innerHTML = HTML; // does *NOT* run <script> tags in HTML
setInnerHTML(, HTML); // does run <script> tags in HTML
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum werden Skripte in innerHTML nicht ausgeführt und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage