Heey

waarom werkt dit wel in FF maar niet in IE:


...
<script language="javascript" type="text/javascript">
	function herlaad()
	{
		openPagina('home');
		setTimeout('herlaad()', 3000);
	}
</script>
...
<body onload="herlaad()">
Als ik gewoon de syntax aanhoud die ik heb geleerd krijg ik dit:


<script language="javascript" type="text/javascript">
    function herlaad()
    {
        openPagina('home');
        window.setTimeout('herlaad()', 3000);
    }
</script>
...
<body onload="herlaad()">


Ter informatie voor de mensen die problemen hebben met de quotes om herlaad() in de setTimeout-function: zo werkt die functie nou eenmaal.

Wat betreft meta-refresh, die staat bij meer mensen uit dan Javascript.
Erik,

Ook dit geeft wel de home-pagina, maar er wordt niet herladen....
Ik ga effe zelf wat testen moment.
Dit werkt in alles:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JS Test</title>

<script language="javascript" type="text/javascript">

var i = 0;

function Fill(text) {
	document.getElementById('divje').innerHTML = text;
}

function Herlaad() {
	i = i + 1;
	Fill(i);
	window.setTimeout('Herlaad()', 3000);
}

</script>

</head>

<body onLoad="Herlaad();">

<div id="divje"> </div>

</body>
</html>
Ik vermoed dat het probleem zit in het mogelijke feit dat e.e.a. uit de externe file nog niet geladen is in IE en hij daarom de functie niet herkent of de functie de variabelen niet herkent. Vervang de openPagina()-functie eens met iets anders of zet het eens in script-tags in je index-file en niet in een .js-file om te debuggen.
Of omdat je twee keer http.responseText aanroept. Ik zou de functie handleResponse zo doen:

function handleResponse() {
var response = http.responseText;

if(response) {
document.getElementById('body').innerHTML = response;
}
}
Ik vind je AJAX-functie erg raar.

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}


Ik gebruik:


<script language="javascript">
var req;

function loadDoc(url) {
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	}
}

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            document.getElementById('vulmij').innerHTML = req.responseText;
        } else {
            alert("There was a problem retrieving the data:\n" +
                req.statusText);
        }
    }
}

</script>


En dan doel ik op de browser-herkenning en statuscode.
Erik, ik ga zo is naar het script hierboven kijken,

en wat is hier fout aan:


<script language="javascript" type="text/javascript">
function Fill(text) {
    document.getElementById('body').innerHTML = text;
}

function Herlaad() {
    var content = http.open('get', 'home.php');
	Fill(content);
    window.setTimeout('Herlaad()', 3000);
}

</script>
De ontbrekende derde parameter in http.open. Maar het ligt denk ik aan je object-aanmaak.

Ik vermoed namelijk dat mijn IE niet doorgeeft dat hij "Microsoft Internet Explorer" heet maar eerder iets met een getal (IE6/IE7) erbij.

edit: ik heb het getest, blijkbaar doet hij dat toch wel.

Reageren