Vor den formalen Spezifikationen wurde viel Verhalten um document.write herum festgestellt, so dass das Verhalten in den Browsern inkonsistent und etwas willkürlich ist. Das Verhalten ist jetzt ziemlich konsistent, aber es gibt Unterschiede, je nachdem, wann es aufgerufen wird.
Die Verwendung von document.write wird größtenteils nicht empfohlen, ist jedoch immer noch nützlich. Es ist ubiquitärer Support bedeutet, dass es als Ersatz für andere Techniken verwendet werden kann, wenn wirklich alte Browser untergebracht werden müssen.
Wenn Sie document.write verwenden, während das Dokument geladen wird (z. B. ein Skriptelement in der Dokumentquelle), müssen Sie weder öffnen noch schließen. Das Dokument wird geöffnet, wenn nach dem Laden des Inhalts navigiert und geschlossen wird (d. H. Wenn das Ereignis load auftritt). Solange also alle write-Anweisungen ausgeführt werden, bevor load auftritt, erledigt der Browser den Rest.
Wenn das Dokument vollständig geladen ist (z. B. wenn das Ereignis load ausgelöst wurde), ruft ein Aufruf von document.write zuerst clear was den gesamten Inhalt des Dokuments löscht, alles. In diesem Fall rufen nicht alle Browser automatisch close auf, wenn der Aufruf von write endet.
Einige Browser nehmen eine Vermutung an und scheinen zu einem späteren Zeitpunkt nahe zu nennen (IE?), andere (Firefox, Safari) halten das Dokument offen, was zu ungewöhnlichem Verhalten führen kann.
Wenn Sie ein untergeordnetes Fenster öffnen, z. Wenn Sie window.open verwenden und dann vom übergeordneten Element aus darauf schreiben, wird der Schreibvorgang nach dem Laden der Seite ausgeführt, sodass das Dokument gelöscht wird. z.B.
%Vor%In diesem Fall werden Sie Google nie sehen, der Aufruf von write löscht die Seite beim Laden und Schreiben des neuen Inhalts.
Browser rufen auch nicht automatisch schließen auf, Sie können nachfolgende Aufrufe an document.write tätigen und sie werden an das vorhandene Markup angehängt, z. B.
%Vor%Möglicherweise sehen Sie eine Animation auf der Registerkarte oder im Fenster, die anzeigt, dass sie noch geladen wird.
Wenn openWindow vor dem Beenden document.close aufruft, löscht der nachfolgende Aufruf von writeToWindow das Dokument zuerst dass das div das einzige Element im Dokument ist (zusammen mit den obligatorischen HTML-, HEAD- und BODY-Elementen, die vom Browser automatisch hinzugefügt werden, und wahrscheinlich ein TITLE, der durch die Fehlerkorrektur hinzugefügt wurde).
Daher sollten Sie in diesem Fall an einem geeigneten Punkt schließen aufrufen.
Wenn beim Laden Folgendes aufgerufen wird:
%Vor%Also nur die document.write Zeile macht in diesem Fall etwas Sinnvolles.
Irgendein Spielcode:
%Vor% Der Unterschied zwischen open()
und write()
besteht darin, dass open()
das Dokument löscht, sodass Sie darauf schreiben können. write()
legt tatsächlich Zeug in das Dokument.
Das explizite Aufrufen von document.open()
/ document.close()
ist nicht erforderlich, da document.write()
implizit open()
verarbeitet, wenn die Seite geladen wurde, und close()
, wenn sie beendet ist.
Lesen Sie die Dokumentation hier
- document.open
ist ein Geigenbeispiel Ссылка
mit diesem Code
%Vor% Wie Sie in der Geige sehen können, werden die Dokumentinhalte überschrieben, da das Dokument am open().
Lesen Sie dies Ссылка
- document.close
, während document.close
nicht explixitly irgendwo getan werden muss. document.write schließt den Stream automatisch
Bearbeiten:
document.write schließt das Dokument beim Schreiben nicht immer immer wurde aufgerufen, nachdem das Dokument geladen wurde (Firefox für Beispiel). In diesem Fall (z. B. Schreiben in ein Kindfenster, das mit window.open), es ist eine gute Vorsichtsmaßnahme, immer nahe zu schließen, wenn fertig geschrieben. Beitrag @RobG
Tags und Links javascript