2010-11-16 81 views
57

Tôi đang cố gắng đặt vị trí cuộn trên một trang sao cho cuộn giấy cuộn được cuộn hết cỡ trên cùng.Đặt vị trí cuộn

Tôi nghĩ rằng tôi cần một cái gì đó như thế này nhưng nó không làm việc:

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

Bất kỳ ý tưởng?

Trả lời

108

Bạn có thể sử dụng window.scrollTo(), như thế này:

window.scrollTo(0, 0); // values are x,y-offset 
+0

cảm ơn bạn verymuch – yussan

33

Cũng đáng chú ý window.scrollBy(dx,dy) (ref)

+0

Điều này cực kỳ hữu ích – Jeff82

6

Lưu ý rằng nếu bạn muốn di chuyển một yếu tố thay vì toàn bộ cửa sổ, các yếu tố không có các phương pháp scrollToscrollBy. Bạn nên:

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; 

Bạn cũng có thể bắt chước các chức năng window.scrollTowindow.scrollBy cho tất cả các yếu tố HTML existant trong trang web:

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

vì vậy bạn có thể làm:

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

LƯU Ý: Object.defineProperty được khuyến khích, vì việc thêm thuộc tính trực tiếp vào prototype là một thói quen phá vỡ xấu (Khi bạn thấy nó :-).

Các vấn đề liên quan