Page 1 sur 1

Scrollbar

Posté : 24 nov. 2007, 23:03
par Mimoune
Bonjour,

Je suis sur un projet de mini-chat pour lequel j'ai défini une zone d'affichage du texte avec un scroll auto qui vient se placer toujours en bas de la zone...

Est-il possible de désactiver le retour en bas de page lorsque l'on clique sur le scroll pour afficher une ligne spécifique choisie ??

Voici mon code js :

Code : Tout sélectionner

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"); objDiv.scrollTop = objDiv.scrollHeight; setTimeout("refresh()",1000); }
La fonction est appelée onload...

Merci d'avance pour vos réponses...

Posté : 24 nov. 2007, 23:44
par Truc
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.

Posté : 25 nov. 2007, 16:08
par Mimoune
up !

Posté : 25 nov. 2007, 16:10
par Truc
Modération :
Mimoune, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Posté : 25 nov. 2007, 18:24
par h0_noMan
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.

Posté : 25 nov. 2007, 18:49
par AB
@h0_noMan, merci d'avoir rajouté le code :wink:

Posté : 25 nov. 2007, 19:19
par h0_noMan
@h0_noMan, merci d'avoir rajouté le code :wink:
Et les commentaires aussi ;)
N'empeches que je deteste buter sur un code qui ne semble pas si compliquer que ça.