2012-10-21 4 views
0

J'ai une section de chat automatique où je dois faire défiler la barre de défilement vers le bas. Comme ceci:Actualisation automatique sans effectuer de défilement

function chatuser(user1) { 
    $("#currentuser").load('chatcontent.php', { 
     current: user1 
    }, function afterchatuser() { 
     $("#currentcontent").attr({ 
      scrollTop: $("#currentcontent").attr("scrollHeight") 
     }); 
    }); 
} 

<div id="currentuser"></div> 

Pour la mise à jour automatique, j'actualise automatiquement la fonction. Comme ceci:

var auto_refresh = setInterval(function chatauto() { 
    chatuser(user1); 
}, 2000);​ 

Mais chaque fois qu'il rafraîchit où jamais la barre de défilement est, il va au fond. Comme si l'utilisateur faisait défiler vers le haut, après l'actualisation, la barre de défilement est automatiquement placée en bas. Je veux arrêter cela, mais il devrait également être actualisé en temps opportun. Aidez-moi, s'il vous plaît.

+0

Pour développer un chat, le meilleur moyen est simplement d'utiliser websocket. Un projet avec un exemple de chat: http://easywebsocket.org/ – sdespont

+0

problème ne se produirait pas si vous étiez en train d'ajouter de nouvelles données et de ne pas les remplacer toutes – charlietfl

Répondre

1

Ce dont vous avez besoin fondamentalement, c'est de changer (augmenter) scrollTop du conteneur de messages par la valeur de la nouvelle différence de hauteur du contenu. Jetez un oeil à ce demo il devrait vous donner une idée.

$('div').scrollTop(function() { 
    return scroll + $(text).appendTo($(this)).height();   
}); 

Ici scroll ancienne valeur scrollTop avant le nouveau contenu ajouté.

Questions connexes