Heim > Web-Frontend > js-Tutorial > Warum können Sie mit asynchron geladenen Skripten keinen Schreibvorgang für Dokumente ausführen?

Warum können Sie mit asynchron geladenen Skripten keinen Schreibvorgang für Dokumente ausführen?

Susan Sarandon
Freigeben: 2024-10-20 14:10:02
Original
268 Leute haben es durchsucht

Why Can't You Execute Write on Documents with Asynchronously-Loaded Scripts?

Schreiben auf Dokument ausführen: Was ist das Problem mit asynchron geladenen Skripten?

Bei der Arbeit mit asynchron geladenen Skripten kann es vorkommen, dass das Problem auftritt Fehler „‚Schreiben‘ für das Dokument konnte nicht ausgeführt werden. Es ist nicht möglich, aus einem asynchron geladenen externen Skript in ein Dokument zu schreiben, es sei denn, es wird explizit geöffnet.“ Dies liegt daran, dass asynchrone Skripte geladen werden, nachdem das Dokument vollständig analysiert und geschlossen wurde, wodurch direkte Änderungen am DOM mithilfe von Funktionen wie document.write() unwirksam werden.

Verstehen der Lösung

Um dieses Problem zu beheben, müssen Sie document.write() durch explizite DOM-Manipulationen ersetzen. Anstatt sich auf das automatische Einfügen von Inhalten zu verlassen, müssen Sie DOM-Elemente manuell erstellen und entsprechend einfügen.

Beispiel

Betrachten Sie das folgende Inline-Skript, das ein rotes Element einfügt „Hallo“-Text in ein „Container“-Div:

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

Um dieselbe Aktion mit einem asynchron geladenen Skript auszuführen, würden Sie das Inline-Skript durch den folgenden Code ersetzen:

<code class="javascript">var container = document.getElementById("container");
var content = document.createElement("span");
content.style.color = "red";
content.innerHTML = "Hello";
container.appendChild(content);</code>
Nach dem Login kopieren

Alternativ können Sie, wenn der Container keinen anderen Inhalt hat, einfach sein inneresHTML überschreiben:

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

Durch die Übernahme expliziter DOM-Manipulationen können Sie sicherstellen, dass Ihre asynchron geladenen Skripte effektiv mit dem Dokument interagieren und vermeiden die Einschränkungen, die durch die verzögerte Skriptausführung entstehen.

Das obige ist der detaillierte Inhalt vonWarum können Sie mit asynchron geladenen Skripten keinen Schreibvorgang für Dokumente ausführen?. 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