设置滚动位置
我试图在页面上设置滚动位置,以便滚动条一直滚动到顶部。
我想我需要这样的东西,但它不工作:
(function () { alert('hello'); document.body.scrollTop = 0; } ());
有任何想法吗?
你可以使用window.scrollTo()
,如下所示:
window.scrollTo(0, 0); // values are x,y-offset
另外值得注意的是window.scrollBy(dx,dy)
( ref )
请注意,如果您要滚动某个元素而不是整个窗口,则元素不具有scrollTo
和scrollBy
方法。 你应该:
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;
您也可以将window.scrollTo
和window.scrollBy
函数模拟到网页中所有外部HTML元素:
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 });
所以你可以这样做:
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);
注意:鼓励Object.defineProperty
,因为直接向prototype
添加属性是坏习惯(当你看到它:-)。