fjh: Systematik bei document.write, open, close, clear ?

Hallo Forum,

kann mir jemand von Euch mal grundsätzlich erklären, wie document.write eigentlich abläuft?

Es gibt ja so einige Probleme damit, wie ich bei der Suche im Archiv und beim Mitlesen festgestellt habe. Allerdings bekomme ich da keine Ordnung rein.

Beim NS funktioniert schreiben auf dasselbe document nur wenn man document.close() anfügt. Dann überschreibt er die ganze Seite. Ok, so weit so gut. Ist das nun korrekt so, ich meine ist der Netscape da genauer als der IE, der das nicht braucht oder ist das ne "Macke".
Warum benötigt man kein document.open?
Ja und document.clear: da passiert bei mir in beiden Browsern gar nichts. Eigentlich dachte ich, daß der Inhalt gelöscht werden sollte?

Ein anderes Szenario ist das Schreiben auf einen anderen Frame. Klappt mit IE problemlos, mit Netscape nur nicht, außer man benutzt layer.
Im Archiv sagte jemand, document.write werde beim Laden der Seite ausgeführt, deswegen könne das nicht gehen. Leuchtet mir irgendwie auch nicht ein...

Und zum Schluß noch ein konkretes Problem:
Ich habe mal eine Seite hochgespielt mit zwei Frames.
http://www.fmi.uni-konstanz.de/~herpersf/test/schreibeframe.htm.
Klickt man auf den Link im oberen Frame, erscheint im oberen Frame eine Seite mit demselben Link und zusätzlichem Text. Im unteren Frame sollte per document.write "Wien" erscheinen. Der document.write Befehl steht am Ende der Seite, die in den oberen Frame geladen wird.
Im IE gehts im NS nicht. Gibts nicht eine Möglichkeit den NS ohne layers dazu zu bewegen, den anderen Frame zu beschreiben?
Klinkt man im IE ein weiteres mal auf den Link, schreibt er wieder "Wien", aber direkt hinter das erste "Wien", eigentlich sollte er doch alles überschreiben? Auch document.clear davorgesetzt bewirkt nichts.

In Dokus zu JS klingt alles immer ganz einfach und logisch, aber gerade bei document.write habe ich schon so oft rumgefummelt wegen zahlreicher Kleinigkeiten, daß ich froh wäre, wenn jemand mal meine Konfusion etwas ordnen könnte.

Vielen Dank im voraus
Franz-Josef

  1. Hallo!

    Beim NS funktioniert schreiben auf dasselbe document nur wenn man document.close() anfügt. Dann überschreibt er die ganze Seite. Ok, so weit so gut. Ist das nun korrekt so, ich meine ist der Netscape da genauer als der IE, der das nicht braucht oder ist das ne "Macke".
    Warum benötigt man kein document.open?

    Wenn Du beim laden der Seite etwas schreiben möchtest, verwendest Du document.write oder document.writeln.

    Wenn Du jetzt aber open(), writeln(), close() verwendest bedeutet das. "Öffne das (bestehende) Dokument, damit ich reinschreiben kann. Dann schreibe was rein und schließe es wieder bzw. beende den Schreibvorgang."

    Ich denke mal, der IE nimmt Dir in diesem Fall einen Fehler nicht so krumm.

    In Ebenen, die schon geladen sind, kann man nachträglich noch was reinschreiben. Auf eine "ganz normale" Seite geht das nicht.

    Ja und document.clear: da passiert bei mir in beiden Browsern gar nichts. Eigentlich dachte ich, daß der Inhalt gelöscht werden sollte?

    clear() gibt es in den letzten zwei JavaScript-Versionen nicht mehr. So habe ich es aus dem JavaScript" von David Flanagan (o'reilly Verlag) herausgelsen. clear() soll wegen vieler Problemchen nicht mehr angewendet werden. Für clear() wird close() empfohlen. clear() hatte oder hat noch die Aufgabe, angezeigte Dokumente in Frames und Fenster zu löschen.

    Ein anderes Szenario ist das Schreiben auf einen anderen Frame. Klappt mit IE problemlos, mit Netscape nur nicht, außer man benutzt layer.

    Im NN klappt das auch ganz gut!

    <../../sfarchiv/1999_4/t07710.htm>
    <../../sfarchiv/1999_4/t08339.htm>
    <../../sfarchiv/1999_4/t07116.htm>

    mfg, André

    1. Hi André

      vielen Dank für die Antwort

      Jetzt ists klarer. Das hochgespielte Beispiel funktionierte nur nicht wegen eines blöden Flüchtigkeitsfehlers. Vergessene Klammern bei document.close().

      Trotz der vielen Probleme hat der NS auch was gutes, er erzieht einen zu genauem Hinsehen. ;-)

      Gute Nacht
      Franz-Josef (der Konfuse)