Heim > Web-Frontend > js-Tutorial > Warum werden über innerHTML hinzugefügte Skripte nicht immer ausgeführt, und wie kann ich das beheben?

Warum werden über innerHTML hinzugefügte Skripte nicht immer ausgeführt, und wie kann ich das beheben?

Patricia Arquette
Freigeben: 2024-12-23 00:22:10
Original
690 Leute haben es durchsucht

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

Können Skripte in innerHTML integriert werden?

Einfügen von Skripten in eine Seite mithilfe von innerHTML in ein

kann dazu führen, dass die Skripte im DOM angezeigt werden, ohne dass sie in Browsern wie Firefox und Chrome ausgeführt werden. In diesem Artikel werden die Gründe für dieses Verhalten untersucht und eine Lösung bereitgestellt, um solche Skripte ausführbar zu machen.

Der im Beispielcode bereitgestellte HTML-Code demonstriert die versuchte Ausführung eines Skripts innerhalb eines

mit innerHTML. Allerdings erscheint die gewünschte Warnmeldung „Hallo“ nicht, was darauf hinweist, dass das Skript nicht ausgeführt werden konnte.

Um dieses Problem zu beheben, stellen wir eine Methode vor, die alle nicht ausführbaren Skripte rekursiv durch ausführbare ersetzt. Diese als nodeScriptReplace bekannte Methode durchläuft den DOM-Baum und identifiziert Skriptelemente. Wenn ein nicht ausführbares Skript gefunden wird, klont es das Skript, weist ihm ausführbaren Inhalt zu und ersetzt das ursprüngliche Skriptelement, sodass es ausgeführt werden kann.

Zusätzlich erstellt die Funktion „nodeScriptClone“ durch Extrahieren ein ausführbares Skriptelement das innerHTML des nicht ausführbaren Skripts und das Festlegen seiner Attribute. Diese Attribute werden an das neue ausführbare Skript übertragen, um ein ordnungsgemäßes Verhalten sicherzustellen.

Die Funktion „nodeScriptIs“ prüft, ob ein bestimmter Knoten ein Skriptelement ist, indem sie seinen Tag-Namen untersucht.

Um das Skript auszuführen und anzuzeigen Um die „Hi“-Warnung zu erhalten, rufen Sie einfach nodeScriptReplace im Stammelement der Seite auf. Das folgende Code-Snippet veranschaulicht dies:

nodeScriptReplace(document.getElementsByTagName("body")[0]);
Nach dem Login kopieren

Diese Methode bietet einen robusten Mechanismus zum Ausführen von Skripten, die mithilfe von innerHTML zu einer Seite hinzugefügt wurden, und stellt so deren beabsichtigte Funktionalität sicher.

Das obige ist der detaillierte Inhalt vonWarum werden über innerHTML hinzugefügte Skripte nicht immer ausgeführt, und wie kann ich das 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