Um Inhalte an ein Dokument anzuhängen, sollten Sie document.write()
nur während der & lt; script & gt; -Block-Analysephase aufrufen.
Wenn Sie einen Aufruf von document.write
irgendwo außerhalb dieses Kontextes haben, wie in Ihrem Event-Handler, wird kein Parsing ausgeführt, also nirgends für den String 'foo'
.
Was nach der ursprünglichen JavaScript-Referenz geschehen sollte, ist:
Ereignishandler werden ausgeführt, nachdem das Originaldokument geschlossen wurde, sodass die Schreibmethode implizit ein neues Dokument mimeType text / html öffnet, wenn Sie nicht explizit eine Methode document.open im Ereignishandler ausgeben.
Das heißt, es setzt voraus, dass Sie einen Fehler gemacht haben und tun sollten:
%Vor%Was das gesamte Dokument durch neuen Inhalt ersetzt. Sie werden das auch bemerken, weil Sie das nicht mit dem Aufruf von
beendet haben %Vor%... in Firefox animiert der 'loading' throbber immer noch und erwartet, dass mehr Inhalt in das Dokument geschrieben wird (aber es kommt nie).
In diesem Fall haben Sie document.write()
einer Zeichenkette:
Das ist eindeutig kein gültiges HTML-Dokument. Chrome (und Safari, das sich gleich verhält) versucht, es als HTML-Dokument zu analysieren, schlägt aber fehl, weil es außerhalb des Dokumentelements (& lt; html & gt;) keinen Leerraum-Textinhalt gibt, der nicht erlaubt ist. Wenn Sie einige Tags in den Namen eingeben:
%Vor%Sie sehen alles außerhalb des & lt; em & gt; Element wird verworfen. Firefox und IE schaffen es, ihre "Fix-up-Text außerhalb jedes Elements" mit der HTML-Regel zu brechen, um Sie zu retten, aber Chrome nicht.
Wenn Sie document.write()
ein neues Dokument erstellen möchten, sollten Sie sicherstellen, dass es sich um ein vollständiges Dokument handelt:
Oder, wenn Sie document.write()
eine Textzeichenfolge haben möchten, sollten Sie theoretisch Folgendes aufrufen:
vor dem write (). Aber Achtung, der Parameter mimetype wird von Chrome oder Safari nicht unterstützt. Sie behandeln immer, was Sie als HTML schreiben.
In jedem Fall möchten Sie diese Methode wahrscheinlich nicht verwenden . Wenn Sie die vorhandene Seite hinzufügen (oder ändern) möchten, sollten Sie normalerweise DOM-Methoden verwenden, z. B. den Text in einem Statusausgabe-Div setzen oder den Body-Inhalt mit innerHTML ersetzen.
document.write()
wird an einigen Stellen benötigt (insbesondere, wenn Sie ein neues Fenster oder einen neuen Frame erstellen), aber ansonsten ist es generell das Falsche und sollte mit Argwohn betrachtet werden.
Tags und Links javascript google-chrome