Đặt vị trí cuộn


107

Tôi đang cố gắng đặt vị trí cuộn trên một trang để con lăn được cuộn hết cỡ lên đầu.

Tôi nghĩ tôi cần một cái gì đó như thế này nhưng nó không hoạt động:

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

Bất kỳ ý tưởng?

Câu trả lời:




34

Lưu ý rằng nếu bạn muốn cuộn một phần tử thay vì toàn bộ cửa sổ, các phần tử không có phương thức 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 hàm window.scrollTowindow.scrollByđối với tất cả các phần tử HTML tồn tại trong trang web trên các trình duyệt vốn không hỗ trợ nó :

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ì trực tiếp thêm thuộc tính vào prototypelà một thói quen xấu (Khi bạn nhìn thấy nó :-).


Điều này là hữu ích, cảm ơn. Nhưng tôi thấy rằng các phần tử có phương thức 'scrollTo'. Xem developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo
Narvalex

@Narvalex đó là những gì đoạn thứ hai nói.
Jorge Fuentes González

Tham chiếu mà tôi đã chỉ ra cho thấy rằng những chức năng đó được tích hợp sẵn. Không cần xác định thuộc tính của các phương thức tích hợp
Narvalex

@Narvalex Ồ, tôi vừa đọc "không có", tệ thật. Tôi phải nói rằng không phải tất cả các trình duyệt đều có nó, mặc dù ngày nay rất khó để tìm thấy trình duyệt như vậy (như IE11).
Jorge Fuentes González

3

... Hoặc chỉ cần thay thế bodybằng documentElement:

document.documentElement.scrollTop = 0;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.