Jochen: Pfade - relative vs. absolute Adressierung

Hallo,

ich benutze ein "externes" CSS/JS-Paket bzw. Script zum Anzeigen meiner Bilder. Soweit auch kein Problem. Als ich testweise einige Bilder und Seiten auf meine Homepage geladen habe, musste ich feststellen, daß einige Bilder aus diesem CSS/JS-Paket nicht angezeigt werden.

Nach einigem Rätseln habe ich die Lösung gefunden: Die JS-Datei ruft die Bilder immer von der aktuellen Position in der Ordnerhierarchie auf.

var fileLoadingImage = "images/loading.gif";
var fileBottomNavCloseImage = "images/closelabel.gif";

Ich dachte mir, das einfachste wäre es, wenn ich "../" davor setze. Da ich aber nicht weiß, wie tief ich in der Hierarchie meiner Seite mal vorstoßen werde, will ich jetzt prophylaktisch einfach mal einige "../" davorsetzen:

var fileLoadingImage = "../../../images/loading.gif";
var fileBottomNavCloseImage = "../../../images/closelabel.gif";

Oder wäre ein abolsuter Pfad in diesem Fall eleganter?

var fileLoadingImage = "http://www.meine-homepage.de/images/loading.gif";
var fileBottomNavCloseImage = "http://www.meine-homepage.de/images/closelabel.gif";

Inwiefern wirken sich diese beide Möglichkeiten auf die Verarbeitungsgeschwindigkeiten aus?

Ist es schneller, wenn der Browser die Grafik direkt von der festen Adresse aufruft (aber dafür erstmal wieder in das WWW vorstoßen muß), oder ist es schneller, wenn der Browser von der aktuellen Position drei Ebenen hochgeht (auch wenn es nur 2 darüberliegende Ebenen gibt) und dort dann aus dem Ordner "images" die Bilder holt?

Lg

Jochen

  1. Hi,

    Ich dachte mir, das einfachste wäre es, wenn ich "../" davor setze. Da ich aber nicht weiß, wie tief ich in der Hierarchie meiner Seite mal vorstoßen werde, will ich jetzt prophylaktisch einfach mal einige "../" davorsetzen:

    var fileLoadingImage = "../../../images/loading.gif";
    var fileBottomNavCloseImage = "../../../images/closelabel.gif";

    das wäre mMn Unsinn und könnte möglicherweise von einigen Browsern nicht korrekt umgesetzt werden.

    Oder wäre ein abolsuter Pfad in diesem Fall eleganter?

    Ja, allerdings nicht so:

    var fileLoadingImage = "http://www.meine-homepage.de/images/loading.gif";

    sondern so:
    var fileLoadingImage = "/images/loading.gif";

    Inwiefern wirken sich diese beide Möglichkeiten auf die Verarbeitungsgeschwindigkeiten aus?

    Ist es schneller, wenn der Browser die Grafik direkt von der festen Adresse aufruft (aber dafür erstmal wieder in das WWW vorstoßen muß), oder ist es schneller, wenn der Browser von der aktuellen Position drei Ebenen hochgeht (auch wenn es nur 2 darüberliegende Ebenen gibt) und dort dann aus dem Ordner "images" die Bilder holt?

    Du denkst da ziemlich verquer. Der Browser setzt jede Angabe zu einer vollständigen URL zusammen. Muss er auch, weil er diese Adresse sonst gar nicht anfordern könnte.

    freundliche Grüße
    Ingo

    1. Danke für die Antwort.

      Oder wäre ein abolsuter Pfad in diesem Fall eleganter?
      Ja, allerdings nicht so:

      var fileLoadingImage = "http://www.meine-homepage.de/images/loading.gif";
      sondern so:
      var fileLoadingImage = "/images/loading.gif";

      In dem Fall muß ich leider den kompletten Pfad angeben. Wenn ich das Script aus von der Seite "http://hauptseite.de/unterseite/bilder.html" aufrufe, sucht es den image-Ordner (wenn man als Angabe nur "images/loading.gif" macht) in genau dem aktuellen Verzeichnis: "unterseite/images/loading.gif", obwohl der Ordner ja im Hauptverzeichnis ist: "http://hauptseite.de/images".

      Aber wenn die Browser eh die komplette Adresse zusammensetzen, hat sich meine Frage diesbezüglich schon erledigt, ich geb einfach den absoluten Pfad an. Dann gehts.
      :-)

      Danke.

      Gruß
      Jochen

      1. Grütze .. äh ... Grüße!

        var fileLoadingImage = "/images/loading.gif";

        In dem Fall muß ich leider den kompletten Pfad angeben.

        Nein, muß man nicht.

        (wenn man als Angabe nur "images/loading.gif" macht) i

        Warum ignorierst du Ingos Lösung?


        Kai

        --
        What is the difference between Scientology and Microsoft? One is an
        evil cult bent on world domination and the other was begun by L. Ron
        Hubbard.
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
      2. Grütze .. äh ... Grüße!

        var fileLoadingImage = "/images/loading.gif";

        In dem Fall muß ich leider den kompletten Pfad angeben. Wenn ich das Script aus von der Seite "http://hauptseite.de/unterseite/bilder.html" aufrufe, sucht es den image-Ordner (wenn man als Angabe nur "images/loading.gif" macht) in genau dem aktuellen Verzeichnis: "unterseite/images/loading.gif", obwohl der Ordner ja im Hauptverzeichnis ist: "http://hauptseite.de/images".

        Nein das Script sucht nicht im aktuellen Unterordner. . Warum ignorierst du Ingos Lösung?


        Kai

        --
        What is the difference between Scientology and Microsoft? One is an
        evil cult bent on world domination and the other was begun by L. Ron
        Hubbard.
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
        1. hi,

          Nein das Script sucht nicht im aktuellen Unterordner. . Warum ignorierst du Ingos Lösung?

          ich glaube ich habe es mißverständlich beschrieben. die bilder, die ich anzeigen lassen will, werden problemlos angezeigt. auch mit den relativen pfaden. es geht mir um die bilder die das js/css-script zur navigation dazuläd.

          es geht um das hier:

          http://www.dolem.com/lytebox/

          mit relativen pfaden komme ich leider nicht weit, da das script immer von der ebene ausgeht, von der es aufgerufen wurde. rufe ich es von der seite "homepage.de/ebene1/ebene2/bild.html auf, sucht es (bei den standardangaben "images/navigation.gif") in der "ebene2" nach dem images-ordner.

          rufe ich es von der seite "homepage.de/ebene1/bild.html" auf, sucht es sucht es in der "ebene1" nach dem images-ordner.

          aber wie gesagt: durch die angabe von absoluten pfaden geht alles wie es soll.
          :-)

          gruß

          jochen

          1. Hallo,

            Warum ignorierst du Ingos Lösung?

            ich glaube ich habe es mißverständlich beschrieben.

            nein, ich finde nicht. Du hast unterschiedliche Bezugspunkte beim Referenzieren von Bildern, deswegen bist du zu dem Schluss gekommen, dass relative Pfadangaben dich nicht weiterbringen.
            Richtig soweit.

            Deswegen hat Ingo dir doch vorgeschlagen, die Bilder absolut zu adressieren - aber ohne das Protokoll und den Hostnamen immer mit anzugeben!

            So long,
             Martin

            --
            why the heck do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?
              (wahsaga)
            1. nein, ich finde nicht. Du hast unterschiedliche Bezugspunkte beim Referenzieren von Bildern, deswegen bist du zu dem Schluss gekommen, dass relative Pfadangaben dich nicht weiterbringen.
              Richtig soweit.

              Deswegen hat Ingo dir doch vorgeschlagen, die Bilder absolut zu adressieren - aber ohne das Protokoll und den Hostnamen immer mit anzugeben!

              Hm, das Problem ist nur: wenn ich "/images/..." angebe, dann findet das Script die Bilder nicht - außer ich rufe das Script in einer Ebene auf, in der der "images" Ordner ist.

              Nur mit absoluten Angaben findet das Script die Bilder auf jeder Ebene.
              ???

              LG

              Jochen

              1. Hi,

                Hm, das Problem ist nur: wenn ich "/images/..." angebe, dann findet das Script die Bilder nicht - außer ich rufe das Script in einer Ebene auf, in der der "images" Ordner ist.

                Das "Script" würde die Bilder auch so finden - vorausgesetzt, die Seiten werden von einem Webserver ausgeliefert, bei dem das Startverzeichnis entsprechend eingestellt ist.
                Ich vermute aber, dass Du das nur offline getestet und die HTML-Datei über das Dateisystem aufgerufen hast. Da klappt das natürlich nicht so.
                Du könntest einen lokalen webserver zum testen installieren oder Dein verzeichnis images ins Root kopieren. Letzteres funktioniert allerdings nicht in allen Browsewrn (im IE7 ja, im Firefox nicht). Oder Du bleibst bei der relativen Adressierung. Das Protokoll mit anzugeben bedeutet aber für lokale Tests, dass die Bilder, sofern nicht aus dem Cache, aus dem Internet geladen werden müssen.

                freundliche Grüße
                Ingo

                1. Hi,

                  ne, das ganze funktioniert werder off- noch online.

                  Sobald ich das Script nicht von der Ebene aus aufrufe, in der der Images-Ordner sitzt, findet er die Bilder nicht mehr.

                  Auch offline muß ich dann den absoluten Pfad meines HP-Ordners angeben (/E:/Homepages/aktuell/images/bild.gif).

                  Wie gesagt, mir ist das ganze rätselhaft.
                  Gut, mit den absoluten Angaben geht das Script, ich muß nur aufpassen, daß ich nicht das Offline-CSS hochlade ohne die Pfade anzupassen.

                  Naja, hauptsache es geht, auch wenn die absoluten Pfadangaben nicht gerade elegant sind.

                  Danke,

                  Jochen

                  1. Hi,

                    ne, das ganze funktioniert werder off- noch online.

                    online _muss_ es funktionieren!
                    / verweist auf das Root-Verzeichnis der Domain.

                    Sobald ich das Script nicht von der Ebene aus aufrufe, in der der Images-Ordner sitzt, findet er die Bilder nicht mehr.

                    dies in Verbindung mit Deiner späteren Aussage:

                    Ich habe es gerade nochmal probiert, aber es geht nicht. Das "close.gif" wird nicht gefunden und wenn man nicht weiß, wo man klicken soll, kann man das Fenster nicht mehr schließen.

                    läßt mich ahnen, dass es sich hier um die "Lightbox" oder ein Derivar dieses Javascripts handelt. Das ist freilich etwas ganz anderes... Um hier mit absoluten Referenzen arbeiten zu können, musst Du das Script schon entsprechend verbessern.

                    freundliche Grüße
                    Ingo

                    1. läßt mich ahnen, dass es sich hier um die "Lightbox" oder ein Derivar dieses Javascripts handelt. Das ist freilich etwas ganz anderes... Um hier mit absoluten Referenzen arbeiten zu können, musst Du das Script schon entsprechend verbessern.

                      Genau, es geht um Lytebox, eine "verbesserung" der "lightbox". ein schönes Script, bis auf die Sache mit der Adressierung.

                      LG
                      Jochen

                      1. Grütze .. äh ... Grüße!

                        läßt mich ahnen, dass es sich hier um die "Lightbox" oder ein Derivar dieses Javascripts handelt. Das ist freilich etwas ganz anderes... Um hier mit absoluten Referenzen arbeiten zu können, musst Du das Script schon entsprechend verbessern.

                        Genau, es geht um Lytebox, eine "verbesserung" der "lightbox". ein schönes Script, bis auf die Sache mit der Adressierung.

                        Inwiefern? Soweit ich jetzt im Schnelldurchgang gesehen habe, sind im Script selbst keine Verweise auf Bilder, alles wird im CSS definiert. Und dort müßtest du
                        nur jedes

                        url(images/..)

                        in

                        url(/images/...)

                        ändern, um einen Ordner „images“ im Root-Verzeichnis anzusprechen


                        Kai

                        --
                        What is the difference between Scientology and Microsoft? One is an
                        evil cult bent on world domination and the other was begun by L. Ron
                        Hubbard.
                        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
                        1. » url(images/..)
                          »
                          » in
                          »
                          » url(/images/...)
                          »
                          » ändern, um einen Ordner „images“ im Root-Verzeichnis anzusprechen

                          Hi,

                          ehrlich gesagt, hatte ich das eigentlich gemacht und es ging nicht. Jetzt habe ich es nochmal probiert und jetzt gehts. Ist mir ein Rätsel, aber rekonstruieren ob ich "damals" irgendeinen Fehler reingeschrieben habe, kann ich jetzt nicht mehr.
                          Aber jetzt klappt es mit "/images...".

                          Und das wichtigste: ich hab einiges über Pfade gelernt.
                          :-)

                          Danke,

                          Jochen

                          1. Grütze .. äh ... Grüße!

                            ehrlich gesagt, hatte ich das eigentlich gemacht und es ging nicht. Jetzt habe ich es nochmal probiert und jetzt gehts. Ist mir ein Rätsel, aber rekonstruieren ob ich "damals" irgendeinen Fehler reingeschrieben habe, kann ich jetzt nicht mehr.

                            Vielleicht war's der Browsercache, der dir noch die alte Version vorgeworfen hat .. aber egal was es war, wenn es nun funktioniert, ist ja alles in <del>Marga</del>Butter


                            Kai

                            --
                            What is the difference between Scientology and Microsoft? One is an
                            evil cult bent on world domination and the other was begun by L. Ron
                            Hubbard.
                            ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
              2. Hm, das Problem ist nur: wenn ich "/images/..." angebe, dann findet das Script die Bilder nicht - außer ich rufe das Script in einer Ebene auf, in der der "images" Ordner ist.

                Dann ist da ein anderer Fehler oder Einfluss, der das behindert, daran liegt es garantiert nicht.

                Nur mit absoluten Angaben findet das Script die Bilder auf jeder Ebene.
                ???

                Tja, "/images/..." ist eine absolute Angabe! Es ist zwar ein relativer URL, aber mit einem absoluten Pfad. Beispiel:
                Der Teil-URL "/images/foo.jpg" von "http://example.com/sub/subsub/inner/1234/xxx/HolladieWaldfee.html" aus führt zu "http://example.com/images/foo.jpg".

                --
                Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
                Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
                1. Hm, das Problem ist nur: wenn ich "/images/..." angebe, dann findet das Script die Bilder nicht - außer ich rufe das Script in einer Ebene auf, in der der "images" Ordner ist.
                  Dann ist da ein anderer Fehler oder Einfluss, der das behindert, daran liegt es garantiert nicht.

                  Nur mit absoluten Angaben findet das Script die Bilder auf jeder Ebene.
                  ???
                  Tja, "/images/..." ist eine absolute Angabe! Es ist zwar ein relativer URL, aber mit einem absoluten Pfad. Beispiel:
                  Der Teil-URL "/images/foo.jpg" von "http://example.com/sub/subsub/inner/1234/xxx/HolladieWaldfee.html" aus führt zu "http://example.com/images/foo.jpg".

                  Danke für die Hilfe.

                  Mir ist das ganze auch Rätselhaft, vor allem da ich mit eurer Hilfe jetzt einiges zum Thema Adressierung gelernt habe.

                  Ich habe es gerade nochmal probiert, aber es geht nicht. Das "close.gif" wird nicht gefunden und wenn man nicht weiß, wo man klicken soll, kann man das Fenster nicht mehr schließen.

                  Das muß irgendwie am JS-File hängen.

                  Gruß
                  Jochen