11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'utilise Settimeout pour rafraichir les données d'une DIV de mon site internet toutes les 5 secondes ; à titre d'exemple, on peut comparer les données rafraichies aux données du genre facebook (nouveaux messages ; invitation ; notifications ; mini-chat ; rien de bien lourd).

J'utilise ce script fait à la main avec la librairie jQuery ;

$(function() {
	function refreshBottom() {
		var reload = setTimeout(refreshBottom, 5000);
		$.ajax({
			url: "ajax.php",
			ifModified:true,
			success: function(content){
				/*
					Mise à jour de la DIV #bottom_user
				*/
				$('#bottom_user').html(content);
			}
		});
	}
	refreshBottom();
});


Cependant depuis que j'ai mis ce code, sur IE mon site (en développement) plante quasiment toujours ; sur Firefox, c'est également très long par moment.

Pouvez-vous m'indiquer s'il existe une solution ou si je fais quelque chose de "mal" ?

Merci d'avance Smiley smile
Ah oui, c'est setinterval ; ce qui est bizarre c'est que mon script s'actualisait quand même ... je regarde avec setInterval si ça plante le navigateur. Smiley smile
Je confirme que le navigateur plante, y compris firefox, je ne peux pas faire de mise en production en l'état =/
Rebonjour et merci de ta réponse,

Si ton script fonctionne bien, le miens ralentit voir "crash" le navigateur au bout d'un moment d'inactivité. =/

Grâce à ton a aide, je suis arrivé à ceci ; ça fonctionne les premières minutes, puis crash surtout en cas d'inactivité.

	if($('#bottom_user').length > 0) {
		function refreshBottom() {
			$.ajax({
				url: "ajax.php",
				ifModified:true,
				success: function(content){
					$('#bottom_user').html(content); // Met à jour BOTTOM_USER
					$('#bottom_alert').hide(); // CACHE LES ALERTE
					$('.bottom_alert').click(function() {
						$('#bottom_alert').fadeToggle(250, function() {
							if($('#bottom_alert').is(':hidden')) {
								refreshBottom(); // SI LA DIV EST INVISIBLE, ON ACTUALISE
							}
							else {
								window.clearInterval(reload); // SI LA DIV EST VISIBLE, ON ACTUALISE PAS (SINON ELLE SE RETROUVE CACHEE)
							}
						});
						return false;
					});
					$('body').click(function() {
						$('#bottom_alert').fadeOut(250);
						refreshBottom();
					});
				}
			});
		}
		refreshBottom();
		var reload = window.setInterval(function() {
			refreshBottom();
		}, 5000);
	}


Si quelqu'un à une idée Smiley confused
Merci d'avance Smiley ravi