Scrollbar en bas

Résolu
XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   -  
XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
je suis en train de réaliser un chat en javascript (jquery), tout est fonctionnel, mais quand la div qui contient les message est trop grande, je voudrais que la scrollbar soit automatiquement mise en bas.
Après de nombreuses recherches et essais, ce qui marche le mieux c'est ceci :
window.document.getElementById('chat').scrollTop = window.document.getElementById('chat').scrollHeight;

Malheureusement, quand la page est rafraîchie, la scrollbar est mise en bas pendant une fraction de seconde puis remise en haut.

Voilà le bout de code qui s'occupe du rafraîchissement de la page :
setInterval(function(){
        $.ajax({
            url: "maj.php",
            type: "post",
            data: { id: $('#id').text(), pseudo: pseudo },
            cache: false
        }).done(function( html ) {
            $("#content").html(html);
        });
    window.document.getElementById('chat').scrollTop = window.document.getElementById('chat').scrollHeight;
},5000);


Comme ceci, la scrollbar est 4.75 secondes en haut et 0.25 secondes en bas. Or j'aimerais qu'elle soit 100% du temps en bas.

La structure de ma page :
<body>
	<div id="content">
		<div id="id"></div>
		<div id="chat"></div>
		<div id="user"></div>
	</div>
</body>


Merci d'avance

1 réponse

XecK Messages postés 386 Date d'inscription   Statut Membre Dernière intervention   54
 
J'ai eu la solution sur un autre forum : à cause de l'asynchronisme de l'AJAX, la fonction est exécutée avant la fonction de callback. Ainsi en déplaçant "window.document.getElementById('chat').scrollTop = window.document.getElementById('chat').scrollHeight;" dans cette fonction, ça marche.
0