cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 2009
-
9 sept. 2008 à 11:02
DevDeb -
11 janv. 2016 à 15:30
Bonjour,
je souhaite faire en sorte que le contenu d'une fenêtre du navigateur défile automatiquement vers le bas (jusqu'au bas de la page). Une fois le bas de la page atteint, il faut que ça défile vers le haut jusqu'à atteindre le haut de la page et vice verca (c'est pour faire un système d'affichage dynamique)
Je ne sais pas trop comment gérer ça en JavaScript
j'ai googler un peu avec des mots comme javascript scroll up down top bottom mais sans succès...
Sur le principe je pense qu'il vaut une variable qui stocke l'état (défilement vers le bas en cours ou défilement vers le haut ou pas de défilement)
Il faut tester si le haut est atteint.
Dans ce cas si on était en train de défiler vers le haut on défile vers le bas (on change la variable d'état)
Il faut aussi tester si le bas est atteint
Si c'est le cas et que l'on était en train de défiler ver les bas on défile vers le haut (en fait on change la variable d'état)
On décale ensuite en fonction de la valeur contenue dans la variable d'état
<?php
$str="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla metus velit, lobortis a, tincidunt vitae, bibendum tincidunt, eros. In eget orci aliquam eros tristique feugiat. Vestibulum feugiat vehicula enim. Aenean bibendum ipsum in enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec pharetra mi non odio. Integer orci nisl, placerat non, adipiscing et, congue non, velit. Integer ipsum. Duis ac ipsum at eros egestas aliquam. Praesent quis sem et justo rutrum tincidunt. Morbi mattis pretium urna. Pellentesque eget orci auctor libero tristique condimentum. ";
for ($i==0 ; $i<20 ; $i++) {
echo $str;
}
echo "\n";
?>
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 13:53
Ah... j'ai quand même un petit soucis...
je veux faire la même chose mais pour un iframe
j'ai mis mon code JavaScript dans un .js
j'ai essayé et ça marche nickel pour faire défiler une page html simple
par contre ça merde pour ma page contenant un iframe
As-tu une idée ?
(c'est parfois difficile lorsqu'on est seul de voir pourquoi ça déconne)
Si tu peux aussi me dire ce que tu optimiserais
(ainsi qu'un BON bouquin ou très bon site sur JS)
Merci d'avance
Le fichier autoscroll.js
var direction = true; // true=bas false=haut
var scroll = true;
var delay=100;
var step=5;
var obj=null;
function pageScroll(new_obj) {
scrolldelay = setTimeout('pageScroll(obj)', delay); // scrolls every xxx milliseconds
function top()
{
if ( obj.scrollTop==0 ) {
return true;
} else {
return false;
}
}
Le contenu (ce qui est dans l'iframe) content.php
<html>
<head>
<title>Content</title>
</head>
Content
<?php
$str="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla metus velit, lobortis a, tincidunt vitae, bibendum tincidunt, eros. In eget orci aliquam eros tristique feugiat. Vestibulum feugiat vehicula enim. Aenean bibendum ipsum in enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec pharetra mi non odio. Integer orci nisl, placerat non, adipiscing et, congue non, velit. Integer ipsum. Duis ac ipsum at eros egestas aliquam. Praesent quis sem et justo rutrum tincidunt. Morbi mattis pretium urna. Pellentesque eget orci auctor libero tristique condimentum. ";
for ($i==0 ; $i<7 ; $i++) {
echo $str;
}
echo "\n";
?>
</html>
et le contenant (la page qui contient l'iframe) scroll_iframe.php
<html>
<head>
<title>Scroll an iframe</title>
<script language="javascript" src="autoscroll.js"></script>
</head>
Alternative text for browsers that do not understand IFrames.
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 14:11
Attention... j'ai oublié de préciser une chose je ne veux/peux pas toucher au fichier content.php
En effet, le contenu de l'iframe est généré par une application sur laquelle je n'ai pas la main... donc il faut que je fasse ça depuis le contenant (scroll_iframe.php)
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 14:57
Je pense être sur la piste d'une idée...
Le problème vient vraissembalement de
window.scrollBy(0, step);
Il faudrait appliquer scrollBy non pas à la fenêtre mais à l'iframe
j'ai essayé
document.getElementById('mydata').scrollBy(0, step); mais ça ne marche pas
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 15:35
En fait j'ai enfin un début de solution
var fen=window.frames[0];
if ( direction ) {
fen.scrollBy(0, step);
} else {
fen.scrollBy(0, -step);
}
mais j'aurais préféré identifier mon iframe à l'aide de son id... plutôt qu'avec l'indice 0 dans window.frames[]... mais à la rigueur je m'en fiche car je n'ai qu'un iframe
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 16:20
Désolé mais j'ai essayé window.frames["mydata"] et window.frames['mydata']
avec mydata l'id du frame et ça ne marche pas...
j'ai aussi un autre problème (sécurité cette fois)
ça marche nickel pour les pages qui sont hébergé sur mon serveur
par contre ça ne fonctionne pas sur d'autres alors que les noms de domaines sont
(où il y a mon script) et http://www.domaine.fr où il y a aussi des pages qui doivent être vue de manière défilante
j'ai lu sur
http://www.webmasterworld.com/forum91/5373.htm qu'il fallait jouer avec mod_proxy sur apache... j'essairais ça à l'occasion...
(si tu as des connaissances là dessus je suis intéressé aussi)
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 9 sept. 2008 à 16:42
>>avec mydata l'id du fram
pas l'id... le name, et ça baigne ( tu me diras que d'habitude
IE sait remplacer l'ID par le name et lycée de versailles...
pa ici peut-être ? )
>>ça ne fonctionne pas sur d'autres domaines
oui. sur un autre domaine on ne peut qu'afficher, rien d'autres.
( on se demande bien pourquoi... mais bon, c'est ainsi )
il y a peu, XTremDuke nous parlais d'une possibilité,
mais uniquement avec ajax sous FF, pour l'instant (?)
en paramétrant un machin qui ressemble à la gestion de htaccess
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 9 sept. 2008 à 16:50
Ah! j'avoue que je ne connais pas la différence entre id et name....
Je suis très interessé par la solution dont tu me parles car justement mon afficheur dynamique utilise Firefox (en fait ça sera basé matériellement sur Linutop http://www.linutop.com ) et côté navigateur Firefox + une extension pour faire un mode kiosque (kiosk mode extension R-Kiosk https://addons.mozilla.org/en-US/firefox/addon/1659 )
>>solution dont tu me parles
noté ni les infos, ni où on en causait, ni rien ( pas de besoins pour l'instant,
entr'autres car, hélas, exclusif FF aujourd'hui )
poser la question dans le forum ? rechercher dans les réponses de XTRemDuke ?
les moteurs recherches ?
francoisch
Messages postés258Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention16 février 2015 28 janv. 2009 à 22:38
Un grand merci pour cette fonction de scroll automatique qui va beaucoup aider un de mes utilisateurs lourdement handicapé à lire sans utiliser sa souris.
cs_scls19fr
Messages postés15Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention29 janvier 20091 29 janv. 2009 à 07:25
Ravi que ça te convienne (au départ ça n'est pas l'objectif mais tant mieux si ça peut servir à d'autres)
En fait au départ c'est pour faire un afficheur dynamique autonome qui fait défiler des pages web sans qu'il y ai besoin d'action de la part de l'utilisateur.
J'ai rajouté un petit système de pause en haut et en bas pour éviter d'avoir "le mal de mer"
Un exemple :
http://www.celles.net/php/scroll/scroll_iframe.php (fait scroller le contenu d'un iframe)
ou
http://www.celles.net/php/scroll/scroll_page.php (fait scroller le contenu d'une page... mais il y a une petite erreur... je ne sais plus où... ça a eu marché !!)
Je poste ici le code js si je venais à effacer ma page
afin de faire une extension qui permette de faire défiler n'importe quelle page web visualisée dans un navigateur (le code JavaScript est injecté dans la page après l'avoir récupérée puis le JS est interprété... ça permet de customiser n'importe quel affichage de page web sans avoir le droit de modifier le source de la page web.
slt désolé j'arrive tardivement sur cette discussion mais cela m'intéresse bcp j'ai lu sur l'un des poste qu'une personne chercher à faire défiler automatiquement des pages web. Cela m'intéresse beaucoup, je cherche à faire défiler des pages web sur un grand écran (monitoring) et je ne trouve pas bcp d'aide sur internet donc si tu pouvais m'aider un peu, je te remercie d'avance