Manne: Datei auf Existenz prüfen

Hallo,

Ich möchte nummerierte Dateien wie "01.html", "02.html" usw. als einzelne Webseite verwenden und per Knöpfe "Weiter"/"Zurück" navigieren.

Mein Problem: ich möchte so, dass wenn eine Datei fehlt, eine Andere mit nächster Nummer geöffnet wird.
Beispiel: ich habe "09.html" im Browser angezeigt. "10.html" und "11.html" sind auf dem Webserver nicht vorhanden. Nach dem Klicken auf "Weiter" soll dann die Datei "12.html" geöffnet werden.

Ich habe bisher keine Funktion finden können, die bzgl. der Existenz einer HTML-Datei z.B. Werte True/False zurückgibt (oder könnte man "onError" benutzen?).

Gibt es eine Lösung, die auf IE und NN funktioniert, und zwar sowohl auf dem Windows als auch auf dem Mac?

Gruß und Frohe Ostern
Manne

  1. Hallo Manne,

    Ich habe bisher keine Funktion finden können, die bzgl. der Existenz einer HTML-Datei z.B. Werte True/False zurückgibt

    mit js kann man nicht überprüfen, ob eine Datei auf dem Server vorhanden ist (js läuft schließlich clientseitig) - da muss schon eine serverseitige Programmiersprache her.

    (oder könnte man "onError" benutzen?).

    wo willst du das einsetzten?

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Tobias,

      Vielen Dank für Deine Antwort.

      (oder könnte man "onError" benutzen?).
      wo willst du das einsetzten?

      Ich dachte an Möglichkeiten wie eta:

      window.onerror

      http://selfhtml.teamone.de/javascript/beispiele/fehlerbehandlung.htm#quelltext
      oder wie "onError" für Bilddateien

      http://forum.de.selfhtml.org/archiv/2003/4/43231/#m236297

      Also, es sieht so aus, ich müsste die Navigationsmethode meiner Website ändern.

      Grüße
      Manne

  2. Hallo,

    Mein Problem: ich möchte so, dass wenn eine Datei fehlt, eine Andere mit nächster Nummer geöffnet wird.
    Beispiel: ich habe "09.html" im Browser angezeigt. "10.html" und "11.html" sind auf dem Webserver nicht vorhanden. Nach dem Klicken auf "Weiter" soll dann die Datei "12.html" geöffnet werden.

    Ich habe bisher keine Funktion finden können, die bzgl. der Existenz einer HTML-Datei z.B. Werte True/False zurückgibt (oder könnte man "onError" benutzen?).

    So etwas was du suchst, das gibt es nicht. JavaScript läuft Clientseitig. Wenn du das was du beschreibst machen willst, dann mach es Serverseitig, dann klappt es auch bei deaktiviertem JavaScript. (Und du hast keine Probleme mit der Abfrage der Existenz.)

    In JS geht höchstens ein etwas schräger Workaround. Du machst ein Frameset mit zwei Frames, eines enthält deine Seite, das andere ist unsichtbar. Bei einem klick auf Weiter lädst du in das Unsichtbare Frame die Seite mit der nächsten Nummer. Diese muss eine Javascript Variable oder etwas ähnlcihes haben die du überprüfen kannst.
    Wenn nach einer bestimmten Zeit die Variable im anderen Frame nicht zur Verfügung steht, dann gibt es die Seite auch nicht.

    Aber ehrlich, solltest du es so machen wie gerade beschrieben, dann ist das eine ziemlich beschissene Lösung.

    Viele Grüße,

    Stefan

    1. Hallo Stefan,

      Danke für Deine Antwort.

      So etwas was du suchst, das gibt es nicht. JavaScript läuft Clientseitig.

      ...

      Aber ehrlich, solltest du es so machen wie gerade beschrieben, dann ist das eine ziemlich beschissene Lösung.

      Danke auch für die beschxxxxx Lösung ;-)

      Gruss
      Manne

  3. Moin!

    Ich habe bisher keine Funktion finden können, die bzgl. der Existenz einer HTML-Datei z.B. Werte True/False zurückgibt (oder könnte man "onError" benutzen?).

    Gibt es eine Lösung, die auf IE und NN funktioniert, und zwar sowohl auf dem Windows als auch auf dem Mac?

    Wie dir bereits versichert wurde, benötigst du Serverunterstützung. Nur der Server weiß, ob es eine URL gibt oder nicht.

    Falls nicht, schickt er zusammen mit dem HTTP-Fehlercode 404 eine HTML-Seite mit der Fehlermeldung. Beim Apache kann man die ganz simpel durch eine eigene Seite ersetzen, in der selbstverständlich auch Javascript enthalten sein darf. Und oh Wunder: Wenn du auf so einer Fehlerseite mal location.href ausgibst, dann erhälst du nicht die URL der Fehlerseite, sondern die angeforderte, aber nicht vorhandene URL.

    Du brauchst also im Prinzip nur ein Javascript schreiben, welches auf der Fehlerseite enthalten ist, die location.href auseinandernimmt, feststellt, welche Seitennummer angefordert wurde, diese Zahl um Eins erhöht und dann die neue Seite abfordert. Sozusagen (aber das funktioniert natürlich so einfach nicht): location.href = location.href + 1;

    Diese Fehlerseite bindest du mit einer .htaccess-Datei ein. Das kann auch gtanz speziell für ein einzelnes Verzeichnis gelten, wenn du noch andere Bereiche hast, die sich nicht durchzählen lassen. Oder dein Javascript prüft, ob die nicht gefundene URL überhaupt zählbar ist.

    Einziger Schwachpunkt: Wenn du über die letzte Seite hinauswanderst, wird dein Skript endlos weiter hochzählen, wenn du keine Abbruchbedingung (also beispielsweise eine maximale Seitenzahl) angegeben hast.

    Und noch ein Schwachpunkt: Abwärts blättern geht so natürlich auch nicht, denn die Fehlerseite zählt nun mal aufwärts. Dazu müßtest du noch einen Parameter in der URL mit übergeben, der für den normalen Lauf vollkommen uninteressant ist, aber der Fehlerseite sagt, ob sie aufwärts oder abwärts zählen soll.

    Du siehst: Es gibt eine Reihe von Möglichkeiten. :)

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!
    1. Moin Sven,

      Danke für Deine Antwort.

      Wie dir bereits versichert wurde, benötigst du Serverunterstützung.

      ...

      Du siehst: Es gibt eine Reihe von Möglichkeiten. :)

      Hmm... Je mehr Möglichkeiten ich erfahre, desto weniger werde ich motiviert sie zu benuzten. :-(
      Ich glaube, ich werde doch die Navigationsmethode meiner Website ändern.

      Frohe Ostern
      Manne