Andreas Maurer: Pfadangaben in einem Javascript für lokale Anwendungen !?

Tag alle zusammen !

Ich habe eine kleine Browserabfrage geschrieben (Javascript), die auch online tadellos funktioniert. Wenn ich aber versuche einen lokalen Pfad anzugeben, funktioniert
nichts mehr. Das wäre für die Programmierung der Seiten ja eigentlich kein Problem, da
man diesen Umstand LOKAL durchaus umgehen könnte. Wie sieht es aber aus, wenn ich die
Seite auf CD-ROM brennen würde (was ich demnächst auch mehrfach muß) ?

Wie anfangs schon erwähnt, bezieht sich das Problem in besonderem Maße auf das Javascript mit der Browserabfrage und nicht auf "nacktes" HTML.

Hier ist ein Auszug aus meinem Javascript (die drei "?" sind das Problem):

...  
if (Browser == "NN4")  
{ var a = "???"; top.location.href = a; }  
...  

Wie kann ich aber ein RELATIVE Pfadangabe in DIESES Javascript schreiben, daß OFFLINE bzw. auf einer CD-ROM/Diskette funktionieren würde ? Ich habe (meiner Meinung nach) schon fast alles versucht (also "../", "....", "file:///c|..." usw.).

Nochmal konkret an einem Beispiel (nur zur Sicherheit!):

Meine Seite liegt auf "c:\work\test\index.html" (hier ist die Browserabfrage 'drin)
Wenn NETSCAPE 4.x als Browser erkannt wird, soll ein RELATIVER Link zu "c:\work\test\ns4\index.htm" stattfinden.

Wenn jemand dann eine Lösung hätte - wäre diese auch kompatibel zu anderen OSs wie z.B. Mac oder UNIX/Linux (wegen der Richtung der "/" bzw. "") ???

VIELEN VIELEN DANK !!!
Andreas

  1. Meine Seite liegt auf "c:\work\test\index.html" (hier ist die Browserabfrage 'drin)
    Wenn NETSCAPE 4.x als Browser erkannt wird, soll ein RELATIVER Link zu "c:\work\test\ns4\index.htm" stattfinden.

    ist doch einfach... die relativen links funktioniern online in einer HTML seite genauso gut wie offline.
    Es sollte also so gehen...

    du bist in C:\work\test\index.html
    um zu ns4/index.htm zu kommen brauchts nur ein
    ns4/index.htm

    um von da wieder ins c:\work\test\index.html zu kommen genügt ein
    /index.html

    c: wäre dann
    ../../irgendwas.html

    sollte auch mit javascript nicht anders sein... wenn es online funktioniert funktioniert es auch auf CD, schon oft so gemacht, nur muß man halt aufpassen das man ALLE links relativ angiebt.

    CU
    Rufinus

    1. Hi Rufinus !

      Erstmal vielen Dank !

      Es hat mir durchaus geholfen (obwohl ich mir sicher war, daß ich genau daß auch schon vorher mal probiert hatte...) Na ja, was solls.

      Aber jetzt habe ich ein weiteres Problem (als direkte Folge aus dem ersten):

      NETSCAPE 4 wird korrekt erkannt und auch auf die entsprechende Seitenversion verzweigt -
      ganz im Gegensatz zum EXPLORER 4: hier wird auch dieser korrekt erkannt (habe das mit alert() Anweisungen getestet) und dann geschieht nichts mehr... es wird keine weitere Seite aufgerufen (obwohl der Pfad diesmal 100%ig stimmt - selbst wenn ich den von NETSCAPE 4 einsetzte passiert nix mehr...). Die dritte Version (für alle anderen Browserversionen) wird ebenfalls korrekt angezeigt.

      Warum wird der EXPLORER 4-Link nicht korrekt abgearbeitet - obwohl dieser Browser einwandfrei identifiziert wurde ???

      Jetzt bin ich wirklich ratlos (oder habe nur "mal wieder" irgendwas übersehen)

      Hier mal wieder ein Code-Ausschnitt besagter Stelle:

      if (Browser == "NN4")
      { var x = "/mh_ver_ns/index.html"; top.location.href = x; } // funktioniert !!!

      else if (Browser == "MSIE4")
      { var x = "/mh_ver_ie/index.html"; top.location.href = x; } // keine Reaktion !!!

      else
      { var x = "/mh_ver_cv/index.html"; top.location.href = x; } // funktioniert !!!

      Wenn Du oder sonst irgendjemand eine Antwort weiß - BITTE SCHREIBT SIE !!!

      Andreas (verzweifelt)

      1. ganz im Gegensatz zum EXPLORER 4: hier wird auch dieser korrekt erkannt (habe das mit alert() Anweisungen getestet) und dann geschieht nichts mehr... es wird keine weitere Seite aufgerufen (obwohl der Pfad diesmal 100%ig stimmt - selbst wenn ich den von NETSCAPE 4 einsetzte passiert nix mehr...). Die dritte Version (für alle anderen Browserversionen) wird ebenfalls korrekt angezeigt.

        Warum wird der EXPLORER 4-Link nicht korrekt abgearbeitet - obwohl dieser Browser einwandfrei identifiziert wurde ???

        [...]

        Wenn Du oder sonst irgendjemand eine Antwort weiß - BITTE SCHREIBT SIE !!!

        Sorry, kenn mich mit JavaScript noch zu wenig aus um das sagen zu können.

        CU
        Rufinus

        1. Also...
          erstmal vielen Dank für die wirklich hilfreichen Stellungnahmen !

          Das/die Problem(e) sind behoben ! Es lag (was das Anzeigen im IE angeht) tatsächlich am
          "/" vor dem Pfad (obwohl ich das als ehemaliger AMIGA-Freak hätte ahnen müssen...). Dieses
          Problem ist jetzt behoben.

          Auch das was ich gegen Ende noch geschrieben habe (obwohl der Browser einwandfrei identifiziert wurde springt er nicht die IE-Seiten an) - ist gelöst (es war alles ein und dasselbe Problem - Stichwort "/")

          Und was das mit Linux/UNIX betrifft: eigentlich hätte ich ja selbst 'drauf kommen müssen, weil
          ich auch sehr oft Linux benutze (aber eben nicht zum "Webdesignen"...). Klar eigentlich, daß
          ein "" vor dem Pfad als Root erkannt würde... Logisch... Ich bin mit Blindheit geschlagen...
          Au Mann !! Ich werde jetzt doch auf eine Insel ohne Strom und Solarzellen auswandern... ;)

          ALSO - VIELEN DANK NOCHMAL AN ALLE !

          Andreas

      2. Hallo Andreas,

        if (Browser == "NN4")
        { var x = "/mh_ver_ns/index.html"; top.location.href = x; } // funktioniert !!!

        »»

        nur am Rande:

        "/mh_ver_ns/index.html" ist keine relative Pfadangabe. Dank dem "/" am Anfang müßte der Browser im lokalen Betrieb direkt unter C: nach dem Verzeichnis "mh_ver_ns" suchen.

        Also wenn deine Datei mit dem Script unter "c:\work\test" ist, sucht der Browser evtl. nach "c:\mh_ver_ns" und wenn da kein Verzeichnis ist, passiert nichts.

        Probier es mal ohne den ersten Slash "/" im Skript:

        { var x = "mh_ver_ns/index.html"; top.location.href = x; }

        Vielleicht hilft es.

        greetings

        Florian

        1. Hallo Andreas,

          if (Browser == "NN4")
          { var x = "/mh_ver_ns/index.html"; top.location.href = x; } // funktioniert !!!
          »»

          nur am Rande:

          "/mh_ver_ns/index.html" ist keine relative Pfadangabe. Dank dem "/" am Anfang müßte der Browser im lokalen Betrieb direkt unter C: nach dem Verzeichnis "mh_ver_ns" suchen.

          Also wenn deine Datei mit dem Script unter "c:\work\test" ist, sucht der Browser evtl. nach "c:\mh_ver_ns" und wenn da kein Verzeichnis ist, passiert nichts.

          Probier es mal ohne den ersten Slash "/" im Skript:

          { var x = "mh_ver_ns/index.html"; top.location.href = x; }

          das bringt im nichts das wäre dann c:\work\test\WODUGRADBIST\mh_ver_ns\index.html

          jetzt ist mir klar warum, ich mach aus faulheit nie das .. vor dem / dazu. Netscape und alle anderen wird es egal sein, nur der IE wird auch für das darstellen von ordnern verwendet und da bezieht sich das / auf root und ../ auf eine ebene höher. ändere es auf
          { var x = "../mh_ver_ns/index.html"; top.location.href = x; } und es sollte funktioniern

          achja, der formhalber ändere die anderen auch :)

          CU
          Rufinus

          1. Tag.

            jetzt ist mir klar warum, ich mach aus faulheit nie das .. vor dem / dazu. Netscape und alle anderen wird es egal sein, nur der IE wird auch für das darstellen von ordnern verwendet und da bezieht sich das / auf root und ../ auf eine ebene höher. ändere es auf

            Nee, Netscape ist das gar nicht egal. Der / ist fuer ihn eine Ebene hoher als ein Laufwerk. Auf einem herkommlichen Windows-PC ist das dann die Ebene "Arbeitsplatz" (oder? weiss nicht genau, hab ich bei mir umbenannt), jedenfalls eins tiefer als der Desktop. Und weil auf dieser Ebene gar keine Dateien liegen koennen (weil es eine rein logische Ebene ist), gehen Links auf /xxx.html in lokalen Umgebungen dann auch ziemlich schief.

            Calocybe

            1. Tag.

              jetzt ist mir klar warum, ich mach aus faulheit nie das .. vor dem / dazu. Netscape und alle anderen wird es egal sein, nur der IE wird auch für das darstellen von ordnern verwendet und da bezieht sich das / auf root und ../ auf eine ebene höher. ändere es auf

              Nee, Netscape ist das gar nicht egal. Der / ist fuer ihn eine Ebene hoher als ein Laufwerk. Auf einem herkommlichen Windows-PC ist das dann die Ebene "Arbeitsplatz" (oder? weiss nicht genau, hab ich bei mir umbenannt), jedenfalls eins tiefer als der Desktop. Und weil auf dieser Ebene gar keine Dateien liegen koennen (weil es eine rein logische Ebene ist), gehen Links auf /xxx.html in lokalen Umgebungen dann auch ziemlich schief.

              Hallo,

              stimmt nicht ganz bezieht sich auf das laufwerk in dem du gerade bist ... Desktop liegt zb in c:\windows\desktop ein cd \proga~1 würde in c:\progra~1 enden :)

              mußte selber nachschaun ... :))) linux ist da viel einfacher hehehe

              CU
              Rufinus

          2. Hallo Rufinus,

            das bringt im nichts das wäre dann c:\work\test\WODUGRADBIST\mh_ver_ns\index.html

            so wie ich Michael verstanden habe, liegt das Script in der index.html in c:\work\test.

            Das Browser-Verzeichnis wäre  c:\work\test\ns4.

            Wenn du jetzt index.html im Browser lädst, wird der bei relativen Links von c:\work\test\ ausgehen.

            Ein Aufruf in index.html wie "ns4/datei" würde c:\work\test\ns4\datei laden.

            Ein Aufruf in index.html wie "../xyz/datei" sollte c:\work\xyz\datei laden.

            greetings

            Florian