Document: write()-Methode

Warnung: Die Verwendung der document.write()-Methode wird dringend abgeraten.

Wie die HTML-Spezifikation selbst warnt:

Diese Methode hat ein sehr eigenwilliges Verhalten. In einigen Fällen kann diese Methode den Zustand des HTML-Parsers beeinflussen, während der Parser läuft, was zu einem DOM führt, das nicht mit der Quelle des Dokuments übereinstimmt (z.B. wenn die geschriebene Zeichenfolge die Zeichenfolge "<plaintext>" oder "<!--" ist). In anderen Fällen kann der Aufruf die aktuelle Seite zuerst leeren, als ob document.open() aufgerufen worden wäre. In weiteren Fällen wird die Methode einfach ignoriert oder es wird eine Ausnahme ausgelöst. Benutzeragenten dürfen explizit verhindern, dass script-Elemente ausgeführt werden, die über diese Methode eingefügt werden. Und um es noch schlimmer zu machen, kann das genaue Verhalten dieser Methode in einigen Fällen von der Netzwerkverzögerung abhängen, was zu Fehlern führen kann, die sehr schwer zu debuggen sind. Aus all diesen Gründen wird die Verwendung dieser Methode dringend abgeraten. Daher sollten Sie die Verwendung von document.write() vermeiden — und falls möglich, vorhandenen Code aktualisieren, der diese Methode noch verwendet.

Die document.write()-Methode schreibt eine Zeichenfolge von Text in einen Dokumentstream, der durch document.open() geöffnet wurde.

Hinweis: Da document.write() in den Dokumentstream schreibt, ruft das Aufrufen von document.write() auf einem geschlossenen (geladenen) Dokument automatisch document.open() auf, was das Dokument löschen wird.

Syntax

js
write(markup)

Parameter

markup

Ein String, der den in das Dokument zu schreibenden Text enthält.

Rückgabewert

Keiner (undefined).

Beispiele

html
<p>Some original document content.</p>
<button onclick="newContent()">Replace document content</button>
js
function newContent() {
  document.open();
  document.write("<h1>Out with the old, in with the new!</h1>");
  document.close();
}

Anmerkungen

Der von Ihnen geschriebene Text wird in das Strukturmodell des Dokuments geparst. Im obigen Beispiel wird das h1-Element zu einem Knoten im Dokument.

Schreiben in ein Dokument, das bereits geladen ist, ohne document.open() aufzurufen, wird automatisch document.open() aufrufen. Nach dem Schreiben rufen Sie document.close() auf, um dem Browser mitzuteilen, dass die Seite fertig geladen ist.

Wenn der document.write()-Aufruf in einem Inline-HTML-<script>-Tag eingebettet ist, wird document.open() nicht aufgerufen. Zum Beispiel:

html
<script>
  document.write("<h1>Main title</h1>");
</script>

document.write() und document.writeln funktionieren nicht in XHTML-Dokumenten (Sie erhalten einen "Operation is not supported" (NS_ERROR_DOM_NOT_SUPPORTED_ERR) Fehler in der Fehlerkonsole). Dies passiert, wenn eine lokale Datei mit der Dateiendung .xhtml geöffnet wird oder für jedes Dokument, das mit einem application/xhtml+xml MIME-Typ bereitgestellt wird. Weitere Informationen finden Sie in den W3C XHTML FAQ.

Die Verwendung von document.write() in verzögerten oder asynchronen Skripten wird ignoriert und Sie erhalten eine Nachricht wie "A call to document.write() from an asynchronously-loaded external script was ignored" in der Fehlerkonsole.

Nur in Edge, der Aufruf von document.write() mehr als einmal in einem <iframe> verursacht den Fehler "SCRIPT70: Permission denied".

Ab Version 55 wird Chrome keine <script>-Elemente ausführen, die über document.write() eingefügt wurden, wenn bestimmte Bedingungen erfüllt sind. Weitere Informationen finden Sie unter Intervening against document.write().

Spezifikationen

Specification
HTML Standard
# dom-document-write-dev

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch