par
h0_noMan » 25 nov. 2007, 18:24
Bon je viens de reussir ce que tu cherchais.
C'est un peu de la bidouille mais cela fonctionne sur firefox 2 et IE 6. (Pas tester sur les autres)
// Variable qui definit si l'utilisateur a utilise la scrollbar
var scrolled = 0 ;
function refresh()
{
if (document.getElementById("session")!=null){
xmlHttpTxt=GetXmlHttpObject();
xmlHttpTxt.onreadystatechange = stateChanged_Ref;
xmlHttpTxt.open("POST","chatRef.asp",true);
var dataPost="log=x";
xmlHttpTxt.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttpTxt.send(dataPost);
}
var objDiv = document.getElementById("affiche");
// Si la scrollbar a ete utilise alors aucun defilement automatique
// Sinon on defile
if(scrolled==0)
{
objDiv.scrollTop = objDiv.scrollHeight;
// Pour outrepasser l'affection de scrolled par l'evenement onscroll active par
// le changement de scrollTop
setTimeout("set()",10);
}
setTimeout("refresh()",1000);
}
function scroll()
{
var d = document.getElementById("affiche");
// val=0 quand la scrollbar est tout en bas
var val = d.scrollTop + d.clientHeight - d.scrollHeight ;
// si la scrollbar est en bas alors on repasse en mode automatique
// sinon on reste en mode libre
scrolled = (val==0)?0:1 ;
}
function set()
{
scrolled = 0 ;
}
Et ajoutes un evenement a ton div
<div id="affiche" onscroll="scroll();"></div>
Demonstration ici.
Bon je viens de reussir ce que tu cherchais.
C'est un peu de la bidouille mais cela fonctionne sur firefox 2 et IE 6. (Pas tester sur les autres)
[php]// Variable qui definit si l'utilisateur a utilise la scrollbar
var scrolled = 0 ;
function refresh()
{
if (document.getElementById("session")!=null){
xmlHttpTxt=GetXmlHttpObject();
xmlHttpTxt.onreadystatechange = stateChanged_Ref;
xmlHttpTxt.open("POST","chatRef.asp",true);
var dataPost="log=x";
xmlHttpTxt.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttpTxt.send(dataPost);
}
var objDiv = document.getElementById("affiche");
// Si la scrollbar a ete utilise alors aucun defilement automatique
// Sinon on defile
if(scrolled==0)
{
objDiv.scrollTop = objDiv.scrollHeight;
// Pour outrepasser l'affection de scrolled par l'evenement onscroll active par
// le changement de scrollTop
setTimeout("set()",10);
}
setTimeout("refresh()",1000);
}
function scroll()
{
var d = document.getElementById("affiche");
// val=0 quand la scrollbar est tout en bas
var val = d.scrollTop + d.clientHeight - d.scrollHeight ;
// si la scrollbar est en bas alors on repasse en mode automatique
// sinon on reste en mode libre
scrolled = (val==0)?0:1 ;
}
function set()
{
scrolled = 0 ;
}[/php]
Et ajoutes un evenement a ton div
[php]<div id="affiche" onscroll="scroll();"></div>[/php]
[url=http://bernadett.e.free.fr/PHP-France/scrollbar%20pour%20chat.htm]Demonstration ici.[/url]