Christian: Netscape 4 führt Script erst nach Reload aus!

Hi,

ich habe ein JavaScript, das ich extern in eine Seite einbinde:

<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<script type="text/javascript" src="test.js"></script>

</body>
</html>

in test.js steht nicht weiter als:

if(document.layers)
{
}
alert("TEST");

Jeder Browser führt das alert() aus! Beim Netscape 4 gibt es folgendes Problem:

Ich öffne NS 4 und springe direkt auf die o.g. Datei. Es passiert NICHTS. Wenn ich die Seite aktualisiere (F5, oder den Button, oder nach einem Fenster Resize) wird das Skript ausgeführt. Wechsel ich dann auf eine andere Seite, und wieder zurück, wird es sofort ausgeführt. Das Problem tritt also nur dann auf, wenn ich NS 4 NEU öffne, und als erstes die o.g. Datei aufrufe, sonst nicht.

Alle anderen Browser machen da keine Probleme!
UND: das Problem besteht auch nur dann, wenn ich nach document.layers abfrage bzw, document.layers irgendwie im Skript auftauchen! Lasse ich das weg, verhält er sich normal! Es wird nur der Code, der NACH document.layers kommt, nicht ausgeführt! Würde ich also

alert("TEST");
if(document.layers)
{
}

schreiben, würde es normal klappen!

Habe auch schon diverses ausprobiert: verschiedene Doctype-Angaben, auch das Attribut language im <script>...

Das Prob ist auch nur bei externen Dateien!

Kennt ihr das Problem?? könnt ihr das nachvollziehen??

Habt ihr ne Lösung??

Danke, Gruß
Christian

  1. Hallo,

    if(document.layers)
    {
    }
    alert("TEST");

    alert("TEST");
    if(document.layers)
    {
    }

    Was soll denn das auch ausgeben?
    Schon mal mit

    if(document.layers)   {
    alert("TEST");
    }
    probiert?

    $xNeTworKx.

    --
    Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.
    1. hi,

      Was soll denn das auch ausgeben?
      Schon mal mit

      es soll ja auch nichts ausgegeben werden. Ich wollte damit nur ein Beispiel nennen, um irgendwie "document.layers" reinzubauen, da der Code danach (!) nicht mehr ausgeführt wird, (unter den von mir beschriebenen Bedingungen).

      Christian

  2. Hi,

    hab mal gehoert, dass document.layers zuweilen Schwierigkeiten in externen *.js macht, konnte das aber selber noch nicht feststellen. Du kannst NC 4x alternativ auch ueber

    if (document.captureEvents  && !document.getElementById) {
        // mach_was();
    }

    identifizieren.

    hth

    Gruesse  Joachim

    1. Hi,

      hab mal gehoert, dass document.layers zuweilen Schwierigkeiten in externen *.js macht, konnte das aber selber noch nicht feststellen. Du kannst NC 4x alternativ auch ueber

      Das beruhigt mich ja, das das andere auch gehört haben. Scheint wohl ein  Bug zu sein!

      if (document.captureEvents  && !document.getElementById) {
          // mach_was();
      }

      Danke, damit klappts glaub ich!

      Gruß
      Christian

  3. in test.js steht nicht weiter als:

    if(document.layers)
    {
    }
    alert("TEST");

    Jeder Browser führt das alert() aus! Beim Netscape 4 gibt es folgendes Problem:

    Dann ist innerhalb von if(document.layers) {..} ein Fehler

    Ich vermute mal schwer, dass du innerhalb der if bedigungn auf ein Objekt zugreifen willst, das erst nach onload zu Verfügung steht.

    Bau dein externens Skript entweder ganz ans Dokumenten Ende vor </body> oder rufe die Funktion erst nach onload auf.

    Struppi.