Imposta la posizione di scorrimento


107

Sto cercando di impostare la posizione di scorrimento su una pagina in modo che lo scroller venga fatto scorrere fino in cima.

Penso di aver bisogno di qualcosa di simile ma non funziona:

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

Qualche idea?

Risposte:




34

Nota che se vuoi scorrere un elemento invece della finestra intera, gli elementi non hanno i metodi scrollToe scrollBy. Dovresti:

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;

Puoi anche imitare le funzioni window.scrollToe window.scrollBya tutti gli elementi HTML esistenti nella pagina web sui browser che non lo supportano in modo nativo :

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
});

così puoi fare:

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);

NOTA: Object.definePropertyè incoraggiato, poiché aggiungere direttamente proprietà a prototypeè una cattiva abitudine che spezza (quando lo vedi :-).


Questo è stato utile, grazie. Ma ho scoperto che gli elementi hanno il metodo "scrollTo". Vedi developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo
Narvalex

@ Narvalex questo è ciò che afferma il secondo paragrafo.
Jorge Fuentes González

Il riferimento che ho sottolineato mostra che quelle funzioni sono integrate. Non è necessario definire le proprietà dei metodi
incorporati

@Narvalex Oh, ho appena letto "non avere", colpa mia. Devo dire che non tutti i browser lo hanno allora, anche se al giorno d'oggi è difficile trovare un browser simile (come IE11).
Jorge Fuentes González

3

... O semplicemente sostituire bodycon documentElement:

document.documentElement.scrollTop = 0;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.