tobi&maettu: 404 clientseitig abfangen mit js?

Hallo zusammen!
Wir möchten eine eigene 404 Seite (uä) in unsere Page einbauen, haben allerdings keinen Einfluss auf den Server. Gibt es eine Möglichkeit, dies in JavaScript zu tun? Wenn nicht, was wäre eine möglichst schlanke Alternative?

Könnte von Bedeutung sein: Wir rufen alle Links via JS auf.

in der Datei scripts.js:
function Aufruf(Link){
  window.open(Link)
}

Beim entsprechenden Eintrag im body:
<script type="text/javascript">
  <!--
    var Seite1 = "http://www.seitesowieso.htm";
  //-->
</script>

Und schliesslich der Link:
<a href="javascript:Aufruf(Seite1)">Seite1</a>

Diese etwas komplizierte Variante, weil wir oft von verschiedenen Orten die Links aufrufen und nur eine Linkliste pflegen wollen.

  1. Hi,

    Wir möchten eine eigene 404 Seite (uä) in unsere Page einbauen, haben allerdings keinen Einfluss auf den Server. Gibt es eine Möglichkeit, dies in JavaScript zu tun? Wenn nicht, was wäre eine möglichst schlanke Alternative?

    Wenn Du keine Möglichkeit hast, das in einer .htaccess zu machen, sehe ich eigentlich nur die, die Fehler zu vermeiden.

    Meine Maschine könnte helfen: http://netp.ath.cx

    Gruß
    Reiner

  2. Hallo Tobi & Matheu,

    es geht nicht, da die Entscheidung, ob eine Seite da ist, der Server trifft und nicht der Client. Es besteht keine Möglichkeit per JS vom
    Client aus auf das Dateisystem des Servers zuzugreifen.

    Gruß Ralf

    1. Danke für den Reply!

      2.Versuch:
      Wenn ein Link futsch ist, sendet der Server doch einen Response von der Art

      The response from the server shall start with the following syntax (See also: note on client tolerance ):

      <status line>   ::=    <http version>  <status code>  <reason line> <CrLf>
        <http version>  ::=    3*<digit>
        <status code>   ::=    3*<digit>
        <digit>         ::=    0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
        <reason line> ::=   * <printable>

      <http version>
      identifies the HyperText Transfer Protocol version being used by the server. For the version described by this document version it is "HTTP/1.0" (without the quotes).

      (Quelle W3C)

      Es muesste doch eigentlich moeglich sein, diesen response abzufangen und auszuwerten (mit js). Mit Java geht's ja auch.
      Wir haben uns auch ueberlegt, dass man evt etwas machen könnte mit der ERROR-Seite, so von der Form
      if (document.title == "ERROR 404 Request usw...") {
      ...
      }

      wir scheiterten aber daran, dass wir auf diese Seite keinen Zugriff hatten.

      Any ideas?

      1. Es muesste doch eigentlich moeglich sein, diesen response abzufangen und auszuwerten (mit js). Mit Java geht's ja auch.
        Wir haben uns auch ueberlegt, dass man evt etwas machen könnte mit der ERROR-Seite, so von der Form
        if (document.title == "ERROR 404 Request usw...") {

        Von wo aus soll das denn passieren? Auf der 404-Seite selber oder wie?

        1. mit der ERROR-Seite, so von der Form

          if (document.title == "ERROR 404 Request usw...") {

          Von wo aus soll das denn passieren? Auf der 404-Seite selber oder wie?

          Nein. Wir öffnen aus der Linkliste ein neues Fenster:

          popup  = window.open(neueseite);

          dann müsste ja jetzt das neue Fenster aktuell sein (?).
          Jetzt:

          var titel = popup.document.title;
          if(titel == "ERROR: The requested URL could not be retrieved") {
              window.open(Error-Seite);
          }

          Allerdings erzeugt das einen Skriptfehler: "Zugriff wurde verweigert"
          und zwar bei var

          1. Hallo tobi&maettu,

            Allerdings erzeugt das einen Skriptfehler: "Zugriff wurde verweigert"

            das gehört zum Sicherheitskonzept von javascript - du darfst nicht auf Seiten zugreifen, die nicht zu deiner Domain gehören. und, nein, das kann man auch nicht umgehen.

            und zwar bei var

            an der Stelle greifst du auf die fremde Seite zu

            Grüße aus Nürnberg
            Tobias

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

              Allerdings erzeugt das einen Skriptfehler: "Zugriff wurde verweigert"
              das gehört zum Sicherheitskonzept von javascript - du darfst nicht auf Seiten zugreifen, die nicht zu deiner Domain gehören. und, nein, das kann man auch nicht umgehen.

              Besten Dank nach Nürnberg!

              Na ja, wenn nicht mit JS, dann geht's vielleicht mit was anderem (wir sind da nicht so die Hirsche...), das man einigermassen einfach in unser Link-Konzept einbauen könnte (siehe oben)?

              PS: Zur Sicherheit doch noch: Die .htaccess-Datei gilt für alle Seiten, die über das entsprechende Netzwerk laufen, oder könnten wir eine Datei anlegen lassen, die nur eine bestimmte Seite/URL kontrolliert und 'unsere' Fehlerseite aufruft. Für den Rest des Netzwerks soll eine andere Fehlerseite geladen werden, die mit unserem Projekt nix zu tun hat.

      2. Danke für den Reply!

        2.Versuch:
        Wenn ein Link futsch ist, sendet der Server doch einen Response von der Art

        The response from the server shall start with the following syntax (See also: note on client tolerance ):

        <status line>   ::=    <http version>  <status code>  <reason line> <CrLf>
          <http version>  ::=    3*<digit>
          <status code>   ::=    3*<digit>
          <digit>         ::=    0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
          <reason line> ::=   * <printable>

        <http version>
        identifies the HyperText Transfer Protocol version being used by the server. For the version described by this document version it is "HTTP/1.0" (without the quotes).

        (Quelle W3C)

        Es muesste doch eigentlich moeglich sein, diesen response abzufangen und auszuwerten (mit js). Mit Java geht's ja auch.
        Wir haben uns auch ueberlegt, dass man evt etwas machen könnte mit der ERROR-Seite, so von der Form
        if (document.title == "ERROR 404 Request usw...") {
        ...
        }

        wir scheiterten aber daran, dass wir auf diese Seite keinen Zugriff hatten.

        Das geht in dem Fall nicht, da Dein JavaScriptcode weg ist, wenn der Response kommt. Würde aber mit cgi gehen.

        Wenn Dir diese Radioseite gehört, guck Dir jetzt mal das Ergebnis an.

        Gruß
        Reiner