Próbuję ustawić pozycję przewijania na stronie, tak aby rolka była przewijana do samej góry.
Myślę, że potrzebuję czegoś takiego, ale to nie działa:
(function () { alert('hello'); document.body.scrollTop = 0; } ());
Jakieś pomysły?
Próbuję ustawić pozycję przewijania na stronie, tak aby rolka była przewijana do samej góry.
Myślę, że potrzebuję czegoś takiego, ale to nie działa:
(function () { alert('hello'); document.body.scrollTop = 0; } ());
Jakieś pomysły?
Odpowiedzi:
Możesz użyć w window.scrollTo()ten sposób:
window.scrollTo(0, 0); // values are x,y-offset
Zwróć uwagę, że jeśli chcesz przewinąć element zamiast całego okna, elementy nie mają metod scrollToi scrollBy. Powinieneś:
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;
Możesz także naśladować funkcje window.scrollToi window.scrollBydla wszystkich istniejących elementów HTML na stronie w przeglądarkach, które nie obsługują ich natywnie :
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
});
więc możesz:
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);
UWAGA: Object.definePropertyjest zalecane, ponieważ bezpośrednie dodawanie właściwości do tego prototypejest złym nawykiem (kiedy to widzisz :-).
... lub po prostu zamień bodyna documentElement:
document.documentElement.scrollTop = 0;