Définir la position de défilement


107

J'essaie de définir la position de défilement sur une page pour que le défilement défile jusqu'en haut.

Je pense que j'ai besoin de quelque chose comme ça mais ça ne marche pas:

(function () { alert('hello'); document.body.scrollTop = 0; } ());

Des idées?

Réponses:




34

Notez que si vous souhaitez faire défiler un élément au lieu de la fenêtre complète, les éléments n'ont pas les méthodes scrollToet scrollBy. Vous devriez:

var el = document.getElementById("myel"); // Or whatever method to get the element

// To set the scroll
el.scrollTop = 0;
el.scrollLeft = 0;

// To increment the scroll
el.scrollTop += 100;
el.scrollLeft += 100;

Vous pouvez également imiter les fonctions window.scrollToet window.scrollByavec tous les éléments HTML existants de la page Web sur les navigateurs qui ne le prennent pas en charge de manière native :

Object.defineProperty(HTMLElement.prototype, "scrollTo", {
    value: function(x, y) {
        el.scrollTop = y;
        el.scrollLeft = x;
    },
    enumerable: false
});

Object.defineProperty(HTMLElement.prototype, "scrollBy", {
    value: function(x, y) {
        el.scrollTop += y;
        el.scrollLeft += x;
    },
    enumerable: false
});

afin que vous puissiez faire:

var el = document.getElementById("myel"); // Or whatever method to get the element, again

// To set the scroll
el.scrollTo(0, 0);

// To increment the scroll
el.scrollBy(100, 100);

REMARQUE: Object.definePropertyest encouragé, car ajouter directement des propriétés au prototypeest une mauvaise habitude (quand vous le voyez :-).


Cela a été utile, merci. Mais j'ai trouvé que les éléments ont la méthode «scrollTo». Voir developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo
Narvalex

@Narvalex c'est ce que dit le deuxième paragraphe.
Jorge Fuentes González le

La référence que j'ai signalée montre que ces fonctions sont intégrées. Pas besoin de définir les propriétés des méthodes
intégrées

@Narvalex Oh, je viens de lire "je n'ai pas", mon mauvais. Je dois dire que tous les navigateurs ne l'ont pas alors, bien que de nos jours il soit difficile de trouver un tel navigateur (comme IE11).
Jorge Fuentes González le

3

... Ou remplacez simplement bodypar documentElement:

document.documentElement.scrollTop = 0;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.