Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum ist document.write() in asynchron geladenen Skripten eingeschränkt?

Linda Hamilton
Freigeben: 2024-10-20 14:09:02
Original
504 Leute haben es durchsucht

Why is document.write() Restricted in Asynchronously Loaded Scripts?

Ausführungseinschränkungen in asynchron geladenen Skripten: Grundlegendes zu den Einschränkungen von document.write()

Der Versuch, aus einem asynchron geladenen Skript in ein Dokument zu schreiben, löst einen Fehler aus eine Konsolenmeldung: „Fehler beim Ausführen von ‚Schreiben‘ für ‚Dokument‘: Es ist nicht möglich, aus einem asynchron geladenen externen Skript in ein Dokument zu schreiben, es sei denn, es wird explizit geöffnet.“ Diese Meldung kann trotz des erwarteten Verhaltens des Skripts erscheinen und Entwickler verwirren.

Warum die Einschränkung besteht

Asynchron geladene Skripte werden oft ausgeführt, nachdem das Dokument analysiert wurde und geschlossen. Folglich wird die Verwendung von document.write() aus solchen Skripten problematisch, da das Dokument nicht mehr zum Schreiben geöffnet ist.

Lösung: Explizite DOM-Manipulation

Anstelle der Verwendung von document .write() müssen Entwickler das DOM in asynchron geladenen Skripten explizit manipulieren. Dazu müssen DOM-Elemente erstellt und mithilfe von Methoden wie .appendChild(), .insertBefore() oder der Einstellung .innerHTML in das gewünschte übergeordnete Element eingefügt werden.

Beispiel: DOM-Manipulation

Betrachten Sie zur Veranschaulichung das folgende Inline-Skript:

<div id="container">
<script>
  document.write('<span style="color:red;">Hello</span>');
</script>
</div>
Nach dem Login kopieren

In einem asynchron geladenen Skript könnte dieser Code ersetzt werden durch:

var container = document.getElementById("container");
var content = document.createElement("span");
content.style.color = "red";
content.innerHTML = "Hello";
container.appendChild(content);
Nach dem Login kopieren

Alternativ, da der Container ist leer, könnte der folgende vereinfachte Code verwendet werden:

var container = document.getElementById("container");
container.innerHTML = '<span style="color:red;">Hello</span>';
Nach dem Login kopieren

Durch die Übernahme dieser DOM-Manipulationstechniken können Entwickler effektiv aus asynchron geladenen Skripten in Dokumente schreiben und dabei die durch document.write() auferlegten Einschränkungen vermeiden.

Das obige ist der detaillierte Inhalt vonWarum ist document.write() in asynchron geladenen Skripten eingeschränkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!