11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Je me suis décidé à créé un petit chat pour mon site et j'ai trouvé sur le net l'objet du DOM XMLHttpRequest qui permet de mettre à jour uniquement les messages du chat. Mon script fonction comme je le veux sous Firefox : lorsqu'on clique sur un lien "actualiser" le contenu d'un div d'id "msg" est mis à jour depuis une page php qui récupère les messages entrés. Voici la fonction js le permettant :

function maj()
{
	req = false;
	if(window.XMLHttpRequest)
	{
		var req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		try 
		{
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} 
		catch(e)
		{
        	try 
			{
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	}
			catch(e)
			{
          		req = false;
        	}
		}
	}
	var msg = document.getElementById("msg");
	req.open("GET", "chat_messages.php", true);
	req.onreadystatechange = function()
	{
		if (req.readyState == 4 && req.status == 200)
			msg.innerHTML = req.responseText;
	}
	req.send(null);
}


Les premières lignes servent à faire la distinction entre IE et les autres navigateurs. Le problème sur IE, c'est qu'au premier affichage la page chat_messages.php se charge, mais ensuite plus aucun moyen d'actualiser le contenu du div "msg" (même en appuyant sur F5). Il faut en fait aller à l'url de la page chat_messages.php, appuyer sur F5 et retourner sur la page du chat pour récupérer les nouveaux messages. Je suppose que tout ceci est un problème de cache, mais je n'y connais absolument rien et je ne comprend pas non plus pourquoi Firefox et IE ne gère pas la chose de la même façon.
Ce serait vraiment chouette si quelqu'un pouvait m'apporter quelques explications et conseils Smiley biggrin
Modifié par jumpy (13 Jan 2006 - 23:06)
Voici une solution simple à ton problème : passe en GET un paramètre inutile mais qui change à chaque appel. La date de et l'heure par exemple.
Merci beaucoup, ça a réglé mon problème effectivement et j'ai réussi à faire ce que je voulais. Merci pour la réponse rapide Smiley cligne