fenêtre défilant automatiquement ; comment faire pour la stopper ?

fenêtre défilant automatiquement ; comment faire pour la stopper ? - HTML/CSS - Programmation

Marsh Posté le 12-08-2004 à 11:37:21    

Bonjour à tous !
 
J'ai trouvé ce petit script super sympa à l'adresse suivante :
http://www.scriptsplus.com/scripts [...] t=scroller
(et y'en a plein d'autres ! avis aux webmatsrers...)
 
Il permet de fairé défiler tranquillement une fenêtre, de photos par exemple.
voici le code :
 
 
dans "head" :
 
<script>
 
var position = 0;
function scroller() {
if (position != 300) {
position++;
scroll(0,position);
clearTimeout(timer);
var timer = setTimeout("scroller()",2); timer;
}
else{
location.replace("#" );
}}</script>
 
et dans la balise body :
 
<body onload="scroller()">
 
 
Rien à dire, ça marche, et c'est mignon comme tout...Mais comment faire pour stopper le défilement et récupérer la "main" sur le curseur de la barre de défilement ? Si on clique enfoncé dessus, certes ça stoppe, mais ça repart dès qu'on relâche, et pas moyen de remonter dans la fenêtre.
 
Tant que j'y suis, à  quoi correspond le "300" de la condition If ? à la durée du défilement ?  
 
Merci de vos lumières,...j'espère un défilement ininterrompu de réponses ! ;)  :)
Tristan

Reply

Marsh Posté le 12-08-2004 à 11:37:21   

Reply

Marsh Posté le 12-08-2004 à 12:08:57    

position c'est le y puisque scroll prend en paramètre le x,y de là où tu veux scroller. le y==0 c'est le haut de la page, donc 300 c'est ...ben plus bas quoi.
 
il se sert d'un timer, pour fluidifier la chose je suppose, qui scrolle toutes les 2 millisecondes.
 
pour le stopper par un clic sur la fenêtre, fais un truc du genre:

Code :
  1. var stoppe_moi_ca = false;
  2. function clickHandler () {
  3. stoppe_moi_ca = !stoppe_moi_ca;
  4. }
  5. document.onclick = clickHandler;


 
et tu prends cette variable en compte dans le scroll

Code :
  1. function scroller() {
  2. if (stoppe_moi_ca)
  3.   return;
  4. // la suite ici ...
  5. }


Message édité par gubug le 12-08-2004 à 12:45:49
Reply

Marsh Posté le 12-08-2004 à 12:36:37    

ici position sert à la fois de durée de défilement (300 ms) et de coordonnée de positionnement.
Au bout de 3 secondes, tu te retrouve à le position 300 et ton défilement s'arrête.
 
Pour le reste gubug t'as donné la solution

Reply

Marsh Posté le 12-08-2004 à 14:22:34    

Merci les gars, mais...ça marche pas.
J'ai surement pas rentré les données là où il fallait.
voici ma prose :
<script>
<!--
var stoppe = false;
function clickHandler () {
 stoppe = !stoppe;
 }
 document.onClick = clickHandler;
 
var position = 0;
function scroller() {
if (stoppe)
return;
}
else if (position != 2000) {
position++;
scroll(0,position);
clearTimeout(timer);
var timer = setTimeout("scroller()",2); timer;
}
else{
location.replace("#" );
}}
//-->
 
 
</script>
</head>
 
<body>
<body onLoad="scroller()">
 
Ou diantre ai-je buggé ?
Merci !

Reply

Marsh Posté le 12-08-2004 à 14:53:30    

A première vue, je dirais :
 

Citation :

function scroller() {  
if (stoppe) {
return;  
}  


 

Citation :

<body>
<body onLoad="scroller()">  

Reply

Marsh Posté le 12-08-2004 à 15:45:37    

Merci !
j'ai réussi à stopper le défilement avec un bouton.
Si j'ai bien tout cap^té, chaque fois qu'on resollicite clickhandler, la variable stoppe reçoit le contraire de sa valeur précédente (donc soit true, soit false).
Mais en recliquant sur le bouon stop, ça ne redémarre pas.
J'ai alors pondu une autre fonction "redemar", mais aucune réaction du bestiau....C'est p'têt pasque ça tourne à 300000KM/S dans le if---return, il n'a pas le temps de capter que "stoppe" est redevenu"false" ?
que la vie est cruelle, parfois...
 
voici ma prose :
<script>
 
 
function clickHandler () {
 stoppe = true;
 }
 
function redemar () {
 stoppe = false;
 }
 
var stoppe = false;
 
 
var position = 0;
function scroller() {
if (stoppe) {
return;
}
else if (position != 2000) {
position++;
scroll(0,position);
clearTimeout(timer);
var timer = setTimeout("scroller()",2); timer;
 
}
else{
location.replace("#" );
}}
//-->
 
 
</script>
</head>
 
<body>
<body onLoad="scroller()">
  <input name="button2" type = "button" onClick = "clickHandler ();" value = "stop"; >
  <input name="button" type = "button" onClick = "redemar (); " value = "continuez"; >

Reply

Marsh Posté le 12-08-2004 à 15:46:55    

Où y'aurait pas une fonction "pause" quelque part, des fois ?? ;) ;:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed