Javascript, Ping probleem op IE en FF

Status
Niet open voor verdere reacties.

Strega

Gebruiker
Lid geworden
31 aug 2009
Berichten
8
Hallo,

Ik heb een probleem met deze code.
Hij werkt perfect op Google Chrome en Apple Safari maar niet op Internet Explorer en FireFox.
Enig idee waarom?
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title id='title'>Ping </title>
<script type="text/javascript">
function ping() {
	dt = new Date();
	host = document.getElementById('host').value;
	
	callback = function() {
		ndt = new Date();
		time = Math.round((ndt-dt)/10);
		document.getElementById('ms').innerText=time+" ms";
		document.getElementById('title').innerText="Ping "+host;
		document.getElementById('text').innerText=host;
	}
	
	if(window.XMLHttpRequest) {
		obj = new XMLHttpRequest();
		obj.open("GET", host, true);       
	} else if(window.ActiveXObject) {
		obj = new ActiveXObject("Microsoft.XMLHTTP");
		obj.open("GET", host, true);
	}
	
	obj.onreadystatechange = callback;
	obj.send(null);
	
	setTimeout('ping()', 1000)
}
</script>
</head>
<body onload="ping()">
Pinging<br>
<span id='text'></span><p>
<input type='hidden' id='host' value='http://www.bartverhavert.be/'><p>
<span id='ms' style='color:green;'></span>
</body>
</html>

Groeten, Strega
 
'innerText' werkte niet. Gewoon lekker innerHTML gebruiken :D

Overgens... ik heb er zoiets van gemaakt:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title id='title'>Pingzor</title>

</head>
<body>
<span id='text'></span><p>
<span id='ms' style='color: #0f0;'></span>



<script type="text/javascript">

var host = 'http://google.com';


function ping(host)
{
   var xhttp, initDate = new Date();

   try{
      xhttp = new XMLHttpRequest();
   }catch(e){
      xhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }

   xhttp.open("GET", host, true);

   xhttp.onreadystatechange = function()
   {
      if(this.readyState == 4)
      {
         var time, nDate = new Date();
         time = ((nDate - initDate)/10).toFixed(1);

         document.getElementById('ms').innerHTML = time + ' ms';
         document.getElementById('text').innerHTML = host;

         setTimeout(function(){ ping(host); }, 1000);
      }
   }

   xhttp.send(null);

}

ping(host);

</script>


</body>
</html>
de globale 'host' variabele is niet echt netjes, maar t werkt nu wel :) het ligt er een beetje aan hoe je dit precies wilt gebruiken, en waarvoor.

Ohja, nog iets: NIET (nadruk :p) een setTimeout zetten als je asynchroon aant laden bent. Want stel je voor dat je nu 1030 ms moet wachten op een response. Dan heb je dus via je timeout ALWEER een request gemaakt. Dubbel request, extra resource, etcetera etcetera. Niet cool. Daarom is het beter deze in je onreadystatechange() te zetten, PLUS een check of ie ook daadwerkelijk wel state 4 heeft (klaar met laden).




:thumb:
 
Laatst bewerkt:
Dag Vegras,

Bedankt voor het antwoordt.
Maar het probleem is nu dat het enkel nog maar in Google Chrome werkt.
In Apple Safari, Internet Explorer en FireFox werkt het bij mij niet.
Weet jij wat de oorzaak kan zijn?

Groeten, Strega
 
welk van de 2 scripts heb je gebruikt? Post je gebruikte code eens?
 
Hallo,

Nu doet hij het wel, sorry. :D

Groeten, Strega
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan