web-dev-qa-db-fra.com

Évitez le défilement / saut de page lorsque l'ancre est dans l'URL

Duplicata possible:
jquery - désactiver le "saut" d'ancrage lors du chargement d'une page

J'affiche un div en fonction de la valeur de hachage dans une URL, mais je veux éviter que la page ne saute à la position de ce div avec cet ID particulier.

Je n'ai le problème que lorsque la page est parcourue directement avec le hachage dans l'URL, dites par exemple si quelqu'un a marqué la page.

Ainsi, par exemple, j'ai l'url domain.com/page.html#myitem-1

ID = myitem-1 s'affichera alors, ce qu'il fait mais la page saute alors à la position de cette div que je ne veux pas.

J'essayais d'utiliser scrollTop (0) pour forcer la position de la fenêtre vers le haut, mais il semble que cela soit appelé avant que le saut d'ancrage n'ait aucun effet

Exemple de code:

  $(document).ready(function() {
    $('.glossary-term').hide();
    $(window.location.hash).show();

    $(window).scrollTop(0);

});

La seule façon dont j'ai pu faire fonctionner ce scrollTop était de le placer dans un setTimeOut d'une durée de 1, mais cela semble être un peu un hack. D'autres suggestions?

Merci

B

15
Ben

Eh bien, si c'est votre mécanisme interne pour utiliser des ancres juste pour afficher des divs, vous pouvez toujours changer (ou supprimer) l'attribut "nom" afin que le navigateur ne le trouve pas directement et n'essaye pas de faire défiler;)

Sinon essayez Comment désactiver l'ancrage "saut" lors du chargement d'une page?

10
Majki