Scroll de la page AVANT l'affichage

Bonjour,

Voilà mon “petit” problème :
Lors d’un réaffichage de la page, je souhaite la positionner à tel endroit Y par un scroll, ça fonctionne parfaitement bien, le hic,
c’est que, avant que le scroll se positionne correctement, l’utilisateur voit la page se composer (donc le scroll est en position ‘top’), et
une fois que tout est affiché, se positionne à la position scroll voulue…
En local, ça marche très, l’affichage étant très rapide, pratiquement instantané, par contre sur le web, vu la lenteur du chargement…
J’espère ne pas avoir été flou dans mon explication :paf:


<head>
<script type='text/javascript'>
window.scrollTo(0,<?php echo $ScrollY ?>); 
</script>
</head>
<body onload="window.scrollTo(0,<?php echo $ScrollY ?>);">

Que ce soit dans le JS ou dans le body, le problème reste le même

Si vous avez une idée
Merci d’avance
Edité le 11/01/2009 à 13:52

Je crains que chaque navigateur décide lui même de quand il va exécuter les scripts associés à la page (avant, après ou pendant le chargement).

Note : Pourquoi utiliser le JavaScript et non pas une ancre HTML () pour ce genre de fonctionnalité ?

Tu devrais déclarer une taille (propriété CSS height) éventuellement.

ou réfléchir à une solution alternative qui ferait ce que tu veux mais sans passer par ça (car bon, le $scrollY calculé en PHP, ça n’est pas non plus tip top quand on sait que la hauteur des composants dépends d’autres paramètres, etc).


Raynor: onload = toujours après le chargement complet de la page.

oui, effectivement, le onload n’intervient qu’après la page chargée :oui:
Le positionnement par ancre n’est pas la bonne solution dans mon cas, car la page se réaffiche par rapport au scroll de l’utilisateur avant le réaffichage, le $scrollY ne provient pas d’un calcul mais de la mémorisation de la position du scroll, pour que l’utisateur retrouve sa page au même endroit.
Sinon, oui je vais essayer le css ^ ^)
Edité le 11/01/2009 à 14:45

Tu peux essayer de mettre ton script à la fin de la page html ? donc qui s’exécute normalement avant la fin du chargement de la page ?

J’ai trouvé, en fait j’ai créé un div (invisible) de la hauteur de la page que je définis comme suit :


<head>
</head>
<body onload="">
<div style="position: absolute; left; -1000px; width: 1px; height: hauteur_de_la_page_en_cours"></div>
<script type='text/javascript'>
      window.scrollTo(0,pos_scrollmem); 
</script>

Et ça AVANT tout le code HTML…
Et ça fonctionne :clap:
Ce qui m’a donné l’idée c’est que le scroll n’à aucune coordonnée Y pour se positionner, je lui donne donne un div afin
qu’il puisse le faire.
Edité le 11/01/2009 à 17:20

Mais tu ne sais pas s’il va attendre d’avoir chargé les images associées par exemple qui vont modifier la “taille” de la page (cas si les n’indiquent pas les tailles).

Peu importe puisque je récupère la hauteur totale de la page AVANT réaffichage

Raynor : oui, mais onload = fin du cycle de chargement. Essaye tu verras bien hein :slight_smile: