Si vous allez sur une page et faites défiler la page, actualisez la page à l'endroit où vous l'avez laissée. C'est génial, mais cela se produit également sur les pages où il y a un emplacement d'ancrage dans l'URL. Un exemple serait si vous avez cliqué sur un lien http://example.com/post/244#comment5
et actualisé la page après avoir regardé autour de vous, vous ne seriez pas à l'ancre et la page saute. Existe-t-il un moyen d'empêcher cela avec JavaScript? Ainsi, quoi qu'il en soit, vous naviguiez toujours vers l'ancre.
javascript
browser
ThomasReggi
la source
la source
Réponses:
Cette solution n'est plus recommandée en raison des changements de comportement du navigateur. Voir d'autres réponses.
Fondamentalement, si une ancre est utilisée, nous nous lions à l'événement de défilement de Windows. L'idée étant que le premier événement de défilement doit appartenir au repositionnement automatique effectué par le navigateur. Lorsque cela se produit, nous effectuons notre propre repositionnement, puis supprimons l'événement lié. Cela empêche les défilements de page suivants de perturber le système.
la source
Sur Chrome, même si vous forcez scrollTop à 0, il sautera après le premier événement de défilement.
Vous devez lier le parchemin à ceci:
Ainsi, le navigateur est amené à croire qu'il était au début avant l'actualisation.
la source
window.onbeforeunload = function(){ window.scrollTo(0,0); }
Pour désactiver la restauration automatique du défilement, ajoutez simplement cette balise à la section head.
Il n'est pas pris en charge par IE. Compatibilité du navigateur.
la source
Après un certain nombre d'échecs, j'ai finalement réussi à faire l'affaire. anzo est correct ici car utiliser
beforeunload
fera sauter la page en haut lorsqu'un utilisateur recharge la page ou clique sur un lien. Il enunload
va de même pour la manière claire de le faire.Javascript way (Merci ProfNandaa ):
EDIT: 16/07/2015
Le problème du saut est toujours là avec Firefox même avec un
unload
événement.la source
beforeunload
solution car elle évite de sauter en haut de la page lors des recharges et des clics d'ancrage.Voici une approche plus générale. Au lieu d'essayer d'empêcher le navigateur de défiler (ou de sauter vers le haut comme cela aurait l'air), je restaure simplement la position précédente sur la page. C'est-à-dire que j'enregistre le décalage y actuel de la page dans localStorage et que je fais défiler jusqu'à cette position une fois la page chargée.
la source
Vous pouvez simplement mettre un # à la fin pour que la page se charge en haut.
Fonctionne sur tous les navigateurs, mobiles et ordinateurs de bureau, car c'est si simple.
});
// Ceci charge la page avec un # à la fin.
la source
Cela fonctionne pour moi.
la source
Tu devrais être capable de.
Lors du chargement, vérifiez si
window.location.hash
a une valeur. Si c'est le cas, récupérez l'élément avec un identifiant qui correspond à la valeur de hachage. Recherchez la position de l'élément (appels récursifs à offsetTop / offsetLeft), puis transmettez ces valeurs à lawindow.scrollTo(x, y)
méthode.Cela devrait faire défiler la page jusqu'à l'élément souhaité.
la source