Uwe: Communicator 4.5 spielt verrückt

Hallo Leute,

beim Arbeiten mit mehreren Layers innerhalb eines Frames verhält sich Netscape Communicator 4.5 völlig verrückt. Der Inhalt der Layers wird beim Laden der Hauptseite mittels

...
if (ns) document.Layer1.src = "1.htm"
if (ns) document.Layer2.src = "2.htm"
...

dynamisch aus zwei externen Dateien geladen. In diesen Dateien sind u.a. mehrere Links und entsprechende Font Eigenschaften definiert. Alles läuft wunderbar ... allerdings nur so lange, bis ich das Fenster über die Buttons in der Communicator Titelleiste verkleinere. Layer2 verschwindet urplötzlich (trotz visibility=show), die Fonts in den externen Dateien werden wild durcheinander in den unterschiedlichsten Punktgrößen dargestellt und die Links verlieren auf einmal ihre Funktion. Bei der erneuten Maximierung des Fensters stürzt der Communicator mit der Meldung

NETSCAPE caused an invalid page fault in
module NETSCAPE.EXE at 0137:004bfe46.

komplett ab und in manchen Fällen ist ein Neustart des Systems fällig.

Kann jemand von euch nachvollziehen, was hier los ist ? Ist das 'n Bug im Communicator oder liegt es an einem Fehler in meinem Javascript Code ?

Danke
Uwe

  1. Hallo Leute,

    beim Arbeiten mit mehreren Layers innerhalb eines Frames verhält sich Netscape Communicator 4.5 völlig verrückt. Der Inhalt der Layers wird beim Laden der Hauptseite mittels

    ...
    if (ns) document.Layer1.src = "1.htm"
    if (ns) document.Layer2.src = "2.htm"
    ...

    Hi...
    bei Netscape sind die anschliessenden Semikolons immer SEHR wichtig .. also

    if (ns) document.Layer1.src = "1.htm";
    if (ns) document.Layer2.src = "2.htm";

    gerade in Zusammenhang mit CSS verabschiedet er sich
    sonst sehr gerne in dieser Form..

    auch in den Style-Sheet angaben umbedingt auf Semikolons
    prüfen !

    gruss
    Jens

    1. Hallo Jens,

      schönen Dank für deinen Hinweis. Damit konnte ich schon mal die merkwürdigen Texteffekte und das Verschwinden des Layer2 beseitigen. Das Verkleinern des Browser Fensters hat allerdings immer noch einen "Invalid Page Fault" zur Folge.

      Soweit ich das nachvollziehen kann, hängt der Absturz damit zusammen, daß der Inhalt von Layer2 bei Verkleinerung des Fensters auf Default (also auf den Inhalt beim erstmaligen Laden der Seite) zurückgesetzt wird. Dürfte eigentlich nicht sein, daß der Inhalt eines Layers beim Verkleinern des Browser Windows verloren geht, oder ???

      Einen Absturz kann ich nur vermeiden, wenn ich nach der Verkleinerung des Fensters sofort die gesamte Seite neu lade. Strange, echt ... . Apropos: Kennst du zufälligerweise 'ne Funktion, mit der ich feststellen kann, ob das Browser Fenster seine Größe verändert ? Hab' leider nichts in SELFHTML oder sonstwo gefunden.

      TIA
      Uwe

      1. Hallo Jens,

        schönen Dank für deinen Hinweis. Damit konnte ich schon mal die merkwürdigen Texteffekte und das Verschwinden des Layer2 beseitigen. Das Verkleinern des Browser Fensters hat allerdings immer noch einen "Invalid Page Fault" zur Folge.

        Soweit ich das nachvollziehen kann, hängt der Absturz damit zusammen, daß der Inhalt von Layer2 bei Verkleinerung des Fensters auf Default (also auf den Inhalt beim erstmaligen Laden der Seite) zurückgesetzt wird. Dürfte eigentlich nicht sein, daß der Inhalt eines Layers beim Verkleinern des Browser Windows verloren geht, oder ???

        Einen Absturz kann ich nur vermeiden, wenn ich nach der Verkleinerung des Fensters sofort die gesamte Seite neu lade. Strange, echt ... . Apropos: Kennst du zufälligerweise 'ne Funktion, mit der ich feststellen kann, ob das Browser Fenster seine Größe verändert ? Hab' leider nichts in SELFHTML oder sonstwo gefunden.

        TIA
        Uwe

        Hi
        von Netscape gibts da ein workaround :

        /**
        * resize.js 0.3 970811
        * by gary smith
        * js component for "reloading page onResize"
        */

        if(!window.saveInnerWidth) {
          window.onresize = resize;
          window.saveInnerWidth = window.innerWidth;
          window.saveInnerHeight = window.innerHeight;
        }

        function resize() {
            if (saveInnerWidth < window.innerWidth
                saveInnerWidth > window.innerWidth
                saveInnerHeight > window.innerHeight
                saveInnerHeight < window.innerHeight )
            {
                window.history.go(0);
            }
        }

        einfach nur includen dann sollte das klappen...

        mfg
              Hendrik

        1. Hallo Hendrik !

          Irgendwie muß ich bei meiner Recherche den ONRESIZE Befehl übersehen haben, aber genau nach diesem Script habe ich gesucht. Danke.

          Uwe

      2. Einen Absturz kann ich nur vermeiden, wenn ich nach der Verkleinerung des Fensters sofort die gesamte Seite neu lade. Strange, echt ... . Apropos: Kennst du zufälligerweise 'ne Funktion, mit der ich feststellen kann, ob das Browser Fenster seine Größe verändert ? Hab' leider nichts in SELFHTML oder sonstwo gefunden.

        hm.. ich würds s machen :

        function tuwas() {
          irgendwlelcher code :)
        }
        window.onresize = tuwas;

        aus irgendwlechen Gründen akzeptiert der IE nicht
        window.onresize = tuwas(paramter);
        also daher am besten ohne () definieren ...

        Wegen der Abstürze solltest du wirklich alle Javascript
        und CSS Statemenst auf Semikolons untersuchen..
        am besten durch nen Validator jagen.. evtl sogar
        den generierten Output von Netscape anschauen und den
        mal validieren..
        Ich kenne diese Abstürze zur genüge.. war immer ein
        fehlendes Semikolen irgendwo :)
        Als OS ist für sowas aber NT echt besser da damit
        wenigstens nicht der Rechner absäuft sondern nur Netscape
        terminiert wird.. :)

        gruss
        jens

        1. Hi Jens,

          ich werd's mal probieren. Nervig ist nur, dass man durch die proprietären Lösungen von MS und Netscape und deren mangelhafte Implementierung ständig zu einem Spagat gezwungen wird.

          Man mag über MS denken wie man will, aber m.E. ist der neue IE5 dem Communicator 4.x in jeder Hinsicht überlegen. Wenn ich nicht an meine Kunden denken müßte (...), würde ich nicht mehr für Netscape Browser entwickeln.

          Danke nochmal
          Uwe