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>
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>
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>
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!