Besim Karadeniz: Browser-Check

Problem: Für eine Website habe ich ein javascript-basiertes Framemanagement eingebaut, daß mit der 4er-Generation von Netscape und IE tadellos funktioniert. Allerdings gibt es mit den 3er-Versionen um so mehr Schwierigkeiten, so daß ich folgende Überlegung angestellt habe:

Ein Script soll zunächst prüfen, um welche Browsergeneration es sich handelt. Ist es eine 4er-Generation, wird per document.write ein spezielles Frameset aufgebaut, daß ein JavaScript-Fragment enthält, daß für die Nutzung des Framemanagements erforderlich ist. Handelt es sich bei dem Browser um eine Nicht-4er-Generation, passiert gar nichts, sondern es soll ein alternatives Frameset gestartet.

Leider funktioniert das alles immer noch nicht, der Netscape 3.0 reagiert immer noch stur und zeigt das BODY-Element an, daß ich eigentlich für Browser eingebaut habe, die keine Frames verstehen, der Navigator 3.0 versteht diese jedoch definitiv. Hier mal den Quellcode, ich wäre für Lösungen sehr dankbar!

---------- schnibbel ----------

<SCRIPT LANGUAGE="JavaScript" SRC="../_script/makeframe.js"></SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--
if (Number(navigator.appVersion.substring(0,1)) >= 4)
{
document.write('<FRAMESET onLoad="Init()" COLS="22%,*" BORDER="0"><FRAME SRC="navigator.html" NAME="links" NORESIZE><FRAME SRC="welcome.html" NAME="rechts" NORESIZE></FRAMESET>')
};
// -->
</SCRIPT>

<FRAMESET COLS="22%,*" BORDER="0">
<FRAME SRC="navigator.html" NAME="links" NORESIZE>
<FRAME SRC="welcome.html" NAME="rechts" NORESIZE>
</FRAMESET>

<BODY BGCOLOR="#000000" TEXT="#ffffff" LINK="#ff0000" ALINK="#800000" VLINK="#0000ff">

<CENTER><TABLE WIDTH="50%" HEIGHT="100%">
<TR ALIGN="center">
<TD><P><IMG SRC="../_img/logo.gif" WIDTH="197" HEIGHT="124" ALT="netplanet-Logo"><P><FONT SIZE="5">Sorry, Ihr Browser kann keine Frames anzeigen. Diese werden jedoch in <I>netplanet</I> verwendet.</FONT><P><SMALL>Weitere Infos zu diesem Problem finden Sie in der <A HREF="../editorial/intro.html#browser">Einführung zu <I>netplanet</I></A>.</SMALL></P></TD>
</TR>
</TABLE></CENTER>

---------- schnibbel ----------

  1. Hallo Besim,

    Leider funktioniert das alles immer noch nicht, der Netscape 3.0 reagiert immer noch stur und zeigt das BODY-Element an, daß ich eigentlich für Browser eingebaut habe, die keine Frames verstehen, der Navigator 3.0 versteht diese jedoch definitiv.

    <SCRIPT LANGUAGE="JavaScript" SRC="../_script/makeframe.js"></SCRIPT>

    Muss das externe Script da stehn? Tut das nicht genau das, was der Code in der Datei selbst tut? (Doppeltgemoppelt also)?

    if (Number(navigator.appVersion.substring(0,1)) >= 4)

    Machs doch so, dass Du abhaengig von dieser Abfrage mit window.location.href zwei unterschiedliche Dateien aufrufst. Die Dateien koennen dann mit ganz normalem HTML jeweils das Frameset aufbauen, das fuer den jeweiligen Browser gedacht ist. Ist nur eine Datei mehr und klappt wenigstens mit allen Browsern, die JavaScript koennen.

    Viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      Machs doch so, dass Du abhaengig von dieser Abfrage mit window.location.href zwei unterschiedliche Dateien aufrufst.

      dieser kleine Stups deinerseits in die richtige Richtung war goldrichtig, DANKE! ;-)

      Je schwerer die Lösung erscheint, desto einfacher ist sie. Ich fang's langsam an zu glauben *g*

      Grüßle,
      -besim

  2. <HTML><HEAD> <TITLE>Browserversion Verzweigung</TITLE>
    <SCRIPT language="javascript"><!--        var version = 0;
    if (navigator.userAgent.indexOf("Mozilla/3.") != -1) { version = 3;        }
    else if(navigator.userAgent.indexOf("Mozilla/4.") != -1) { version = 4;        }
    else version = 2;
    function ver(){        if (version == 4) open("2.htm","_parent");
            if (version == 3) open("1.htm","_parent");
      if (version == 2) open("sorry.htm","_parent");      }//--></script></head>
    <body><center><h2>JAVAscript -- Browser- Typ und -Version feststellen</h2><hr>
    <A HREF = "javascript:ver()">Nächste Seite</A><hr></center></BODY></HTML>

    das wäre z.B. ein Vorschlag