Fehlerbehandlung bei der Weiterleitung
Tobi
- javascript
0 molily
Hi,
ich habe folgendes Problem, für das ich keine Lösung im Netz gefunden habe:
In einem GUI zu einem Programm muss ich auf http://localhost:81/version weiterleiten.
Nun kann es aber sein, dass z.B. kein HTTP-Server auf localhost:81 eingestellt ist. In diesem Fall möchte ich eine eigene Fehlermeldung ausgeben.
Mein Versuch:
<html>
<head>
<title>Version</title>
<style type="text/css">
body { background: #080808; color:#ffffff; }
</style>
<script type="text/javascript">
function Redirect () {
window.location.href = "http://localhost:82/version"
}
function Errormessage () {
document.all.content.innerHTML = "Fehler beim Laden.";
}
window.setTimeout("Errormessage()", 10000);
</script>
</head>
<body onload="javascript:Redirect();">
<span id="content" class="content">
Loading...
</span>
</body>
</html>
Nun - im Opera (7.52) funktioniert das problemlos, im IE gibt es nach längerer Zeit eine Fehlermeldung "Cannot find server" und im Firefox (1.5) wird gleich eine Seite mit einer Fehlermeldung eingeblendet. Ähnlich sieht es aus, wenn ich per meta-Angabe weiterleite (statt mir JavaScript).
Hat hier vielleicht irgend jemand eine Idee, wie ich das Problem löse (ich habe zugegebener maßen nicht viel Ahnung von JavaScript)?
Danke,
Tobi
Hallo,
In einem GUI zu einem Programm muss ich auf http://localhost:81/version weiterleiten.
Nun kann es aber sein, dass z.B. kein HTTP-Server auf localhost:81 eingestellt ist. In diesem Fall möchte ich eine eigene Fehlermeldung ausgeben.
Das Problem ist nicht auf diese Art lösbar. Eigentlich fällt mir keine Möglichkeit ein.
Du kannst höchstens a) ein Bild oder b) ein Script von localhost laden.
Zum Bild siehe http://javascript.jstruebig.de/javascript/42/.
Zum Script: Du bindest <script type="text/javascript" src="http://localhost:81/script.js"></script> ein. In script.js wird eine Variable gesetzt. Nach zehn Sekunden Timeout fragst du dann wie in deinem Beispiel ab, ob die Variable gesetzt wurde. Wenn nicht, dann konnte das Script nicht geladen werden.
Möglicher Nachteil dieser Lösungen: Auf http://localhost:81/ muss unter einer vorhersehbaren Adresse ein Bild bzw. Script liegen, auf das du Einfluss hast. Ich weiß ja nicht, ob es dir möglich ist, dort eine solche Datei zu platzieren.
Mathias
Hallo Mathias,
Möglicher Nachteil dieser Lösungen: Auf http://localhost:81/ muss unter einer vorhersehbaren Adresse ein Bild bzw. Script liegen, auf das du Einfluss hast.
Weiterer Nachteil: Wenn der Zugriff einmal erfolgreich war, der Server aber später mal nicht erreichbar ist, stellst du das mit der Methode u.U. nicht fest, weil der Browser die angeforderte Ressource vom letzten Versuch her noch im Cache hat.
Hier spielt das Caching-Verhalten des verwendeten Browsers also eine große Rolle. Und nach meiner Erfahrung greifen die meisten Browser in der Defaulteinstellung bevorzugt auf ihren Cache zu, ohne zu prüfen, ob die Ressource auch online noch verfügbar ist - wozu auch?
Schönen Sonntag noch,
Martin
Hallo,
Wenn der Zugriff einmal erfolgreich war, der Server aber später mal nicht erreichbar ist, stellst du das mit der Methode u.U. nicht fest, weil der Browser die angeforderte Ressource vom letzten Versuch her noch im Cache hat.
Naja, das ist eigentlich das kleinste Problem. Man hängt der URI einfach einen new Date().getTime()-Timestamp im Query-String an, sodass sie eindeutig ist.
Mathias
Hi,
danke für eure Ideen - ich denke, ich werde das so machen.
Das Hauptproblem ist, ob der Server überhaupt unter http://localhost:81 gestartet wurde - es soll sozusagen geprüft werden, ob es richtig installiert wurde.
Danke!
Tobias