mémoriser position d'un scrollbar

mémoriser position d'un scrollbar - HTML/CSS - Programmation

Marsh Posté le 04-06-2007 à 15:38:08    

Salut à tous,
 
je conçois un site qui contient des pages HTML dans lesquelle sont inclue des autre pages (iframe), dans cette iframe il y as un scrollbar. Comment faire pour mémoriser la position du scrollbar lorsque je rafrachi la page ou que je rappel la page depuis un javascript.history.back()
 
merci

Reply

Marsh Posté le 04-06-2007 à 15:38:08   

Reply

Marsh Posté le 04-06-2007 à 15:47:41    

reponse courte:
pas possible
 
reponse longue:
en fait si mais c'est extrement pas facile. Il faut que tu stockes la position de chaque iframe sur le onbeforeunload, que tu la stockes dans un cookie ( ou une session) et que sur le onload tu la ré-initialises.

Reply

Marsh Posté le 04-06-2007 à 16:02:35    

le souci c'est que sous firefox la position est gardée sans rajouter aucun code, mais sous ie sa passe pas, et j'y connais pas grand chose en javascript :(
Si tu pouvai détailler la sythaxe que je doit mettre sa m'aiderai beacoup, merci


Message édité par cyberP@cal le 04-06-2007 à 16:03:18
Reply

Marsh Posté le 04-06-2007 à 16:32:07    

Je ne crois pas que anapajari va te donner la synthaxe, mais bon, on peut toujours rêver :D
C'est trop difficile et surtout trop chiant. A mon avis, à ce stade, tu devrais prendre des cours de programmation en JavaScript.
Et puis de toute façon c'est complètement inutile.


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 04-06-2007 à 16:36:02    

En gros (mais va falloir creuser plus, notamment parceque je sais même pas si ces fonctions marchent sous IE) :
- Récupérer le scroll d'une iframe : ScrollTop (de l'objet "document" je crois)
- Se déplacer à un offset donné : ScrollTo() (toujours sur "document" il me semble)

Reply

Marsh Posté le 04-06-2007 à 16:45:46    

Ca marche ça (à dégorettiser) :
 

Code :
  1. <html>
  2.  <head>
  3.    <title>Test &lt;pre&gt;</title>
  4.    <script type="text/javascript">
  5. // Fonctions récupérées sur le net
  6. function EcrireCookie(nom, valeur)
  7. {
  8. var argv=EcrireCookie.arguments;
  9. var argc=EcrireCookie.arguments.length;
  10. var expires=(argc > 2) ? argv[2] : null;
  11. var path=(argc > 3) ? argv[3] : null;
  12. var domain=(argc > 4) ? argv[4] : null;
  13. var secure=(argc > 5) ? argv[5] : false;
  14. document.cookie=nom+"="+escape(valeur)+
  15. ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
  16. ((path==null) ? "" : ("; path="+path))+
  17. ((domain==null) ? "" : ("; domain="+domain))+
  18. ((secure==true) ? "; secure" : "" );
  19. }
  20. function getCookieVal(offset)
  21. {
  22. var endstr=document.cookie.indexOf (";", offset);
  23. if (endstr==-1) endstr=document.cookie.length;
  24. return unescape(document.cookie.substring(offset, endstr));
  25. }
  26. function LireCookie(nom)
  27. {
  28. var arg=nom+"=";
  29. var alen=arg.length;
  30. var clen=document.cookie.length;
  31. var i=0;
  32. while (i<clen)
  33. {
  34. var j=i+alen;
  35. if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
  36. i=document.cookie.indexOf(" ",i)+1;
  37. if (i==0) break;
  38. }
  39. return null;
  40. }
  41.      function SaveScroll()
  42.      {
  43.        EcrireCookie("scroll", document.body.scrollTop);
  44.      }
  45.      function SetScroll()
  46.      {
  47.        var sc = LireCookie("scroll" );
  48.        if (sc != null) document.body.scrollTop = sc;
  49.      }
  50.    </script>
  51.  </head>
  52.  <body onunload="SaveScroll();" onload="SetScroll();">
  53.  </body>
  54. </html>

Reply

Marsh Posté le 04-06-2007 à 16:46:52    

PS : Pas testé dans un iframe par contre.

Reply

Marsh Posté le 03-08-2007 à 12:34:39    

Bonjour à tous
 
super le script MagicBuzz. Le souci est qu'il ne fonctionne pas sur IE. Quelqu'un aurait-il la solution ?
 
Merci.
 
Cyril

Reply

Sujets relatifs:

Leave a Replay

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