Na jednej ze swoich stron stosuję proste przekierowanie typu ramka na inny adres (prywatny serwer). W tym celu stosuję taki oto kod:
- Kod: Zaznacz cały
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<frameset rows="100%">
<frame src="http://227.228.188.62:3313/">
</frameset>
</html>
Abstrahuję tutaj od przestarzałości ramek i ewentualnej niepoprawności powyższego kodu (strona będzie osiągalna wyłącznie prywatnie dla kilku osób, więc brzydko mówiąc - olewam sobie te zagadnienia).
Jak widać, strona przekierowuje na prywatny serwer. Z różnych względów serwer HTTP jest osiągalny nie po standardowym (80) tylko po "kosmicznym" porcie. To powoduje, że niektórzy ludzie nie mogą dostać się do tej strony. Nie znam się na sieciowaniu, ale domyślam się, że wynika to z tego, iż w ich sieciach na routerach jest ów "kosmiczny" port zablokowany.
Nie ważne, z jakiego powodu - ważny jest efekt. U tych osób zamiast przekierować (czyli wyświetlić w ramce) właściwy adres przeglądarka pokazuje standardowy komunikat, typu: "Firefox nie może nawiązać połączenia z serwerem 227.228.188.62" lub analogiczny.
Tu moje pytanie. Czy istnieje jakikolwiek sposób (JavaScript?) sprawdzenia, czy zadany adres docelowy przeglądarka jest w stanie wyświetlić i jeśli tak, to wyświetlenie go (według powyższego kodu)? A jeśli nie - to zamiast w ramce wywoływać ów adres IP, wyświetlić lokalny (na serwerze) jakiś pliczek HTML zawierający krótką informację, że nie udało się i dlaczego?
To nosi znamiona jakiegoś prostego przechwytywania błędów, jeśli to w ogóle w HTML i JS jest możliwe? Czy na przykład mogę zapodać przy pomocy JS właściwy adres do document.frames.URL lub document.frames.href, a potem z innej właściwości tego obiektu sprawdzić, czy załadowanie dokumentu się powiodło, czy może zamiast tego wyświetlono komunikat o błędzie?
Coś pewnie mieszam, albo oczekuję niemożliwego, prawda? :/