Hi Leute,
ich möchte prüfen ob eine Webseite erreichbar ist, bevor ich sie scriptseitig versuche zu laden. Dazu verwende ich das untenstehende Script, das ich "geklaut" und angepasst habe - oder zumindest versuche :)
Eigentlich habe ich erwartet, dass das Script entweder online ODER offline per alert() anzeigt, das ist bei mir aber nicht der Fall. Das offline wird unverständlicherweise IMMER ausgegeben, aber immer erst nach dem online alerted wurde - gut, das kann natürlich eine optische täuschung sein - aber was zählt ist eben, dass es entweder vorher ausgegeben wird, obwohl es weiter unten im Code steht oder, dass das offline=false nicht greift (wobei ich eher die erste Variante vermute).
Mir ist im Grunde schleierhaft, wieso die Klammerung nicht greift.
Sprich das "xmlhttp.onreadystatechange" nicht komplett abgearbeitet wird (was auch immer das heißen mag). Und insbesondere wie ich mir das vorstellen muss: Das onreadystatechange ist ja wie ein Event zu verstehen oder? Wie wird der Code dann abgearbeitet? Also wann das send(null) ausgeführt? Ich hätte vermutet, dass die anonyme Funktion, die bei onreadystatechange deklariert wird solange/sooft aufgerufen wird, bis keine changes mehr möglich sind - geht das überhaupt?
Naja wie auch immer. Vielleicht gehe ich völlig falsch an die Sache ran und es gibt eine viel sinvollere Möglichkeit die Verfügbarkeit einer Webseite zu prüfen. Meine Fkt. soll natürlich später entweder per return oder durch setzen einer globalen Variable, oder durch direktes aufrufen einer anderen Fkt. agieren. Die alerts sind nur zu Debug- und Verständniszwecken eingebaut.
Danke allen, die sich hiermit beschäftigen,
Paul
var xmlhttp=false;
var offline=true;
try{
xmlhttp = new XMLHttpRequest();
}catch (e){
xmlhttp=false;
}
[...]
function webseiteErreichbar(){
xmlhttp.open("HEAD", window.location.href,true);
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState==4) {
if (xmlhttp.status==200){
alert("online");
offline=false;
return;
}
}
}
xmlhttp.send(null)
if(offline){
alert("offline");
}
}