Skriv dette så langt oppe i koden, som overhovedet muligt:
<script type="text/JavaScript">
var isOnline = false; // Denne variabel kan der testes på fra andre funktioner
function checkOnline() {
var a = ["
http://www.google.dk/images/hp0.gif", "
http://www.eksperten.dk/img/t.gif"]; for (var i=0; i<a.length; i++) {
var im = new Image();
im.onload = function(){isOnline=true};
im.src = a[i] + "?u=" + new Date().getTime();
}
}
checkOnline();
function doMyShit(beenHere) {
if (isOnline) { // Du er online, gør noget
alert("Smil ... du er på!")
}
else if (!beenHere) { // Prøv igen
setTimeout("doMyShit(true)", 200);
}
else { // Så er der zq nok ikke hul igennem
alert("Check stikket, Pomfrit!");
}
}
window.onload = function() {
setTimeout("doMyShit()", 100);
}
</script>
- så skal du - alt efter billedfilernes størrelse og dokumentets egen størrelse - fiddle lidt rundt med de '100' i timeout'en. Jo mindre billeder, du tester på, jo bedre.
Browseren begynder at downloade billederne allerede, når den læser kaldet 'checkOnline();'.
Derefter loader den resten af siden - hvilket giver den en vis tid til at færdiggøre download af filerne.
Derefter giver vi den 100 msek, før vi tester på variablen.
Er variablen stadig false, venter vi yderligere 200 msek og tester igen.
Er variablen stadig false, går vi udfra, PC'en er offline.
Med de viste billedfiler og et helt tomt dokument var de 100 msek nok til, at scriptet virker i både IE, FF og Opera - med min forbindelse, der er ret god. Derudover er der så garderingen på de ekstra 200 msek.
Hvis du samtidig har en del indhold i dit dokument, passer tallene nok meget godt ;o)