2010-09-08 40 views
81

Tôi đang xây dựng một trang web mà tôi đang xuất bản với div s. Khi tôi làm mới trang sau khi trang được cuộn đến vị trí X, thì trang được tải với vị trí cuộn như X.Vị trí cuộn trang lực lên đầu trang làm mới trang trong HTML

Làm cách nào để buộc trang được cuộn lên đầu trang làm mới?

  • Những gì tôi có thể nghĩ đến là của một số JS hoặc jQuery chạy như onLoad() chức năng của trang để SET các trang di chuyển đến hàng đầu. Nhưng tôi không biết làm thế nào tôi có thể làm điều đó.

  • Một lựa chọn tốt hơn sẽ là nếu có một số tài sản hoặc một cái gì đó đã trang nạp với vị trí cuộn của nó như là mặc định (tức là ở phía trên) sẽ được loại giống như tải trang, thay vì trang làm mới.

+0

Đáng ngạc nhiên, không ai trong số các giải pháp ở đây làm việc cho tôi, nhưng điều này đã làm: http://stackoverflow.com/a/11486546/470749 – Ryan

Trả lời

120

Bạn có thể làm điều đó bằng cách sử dụng phương pháp scrollTop trên DOM ready:

$(document).ready(function(){ 
    $(this).scrollTop(0); 
}); 
+0

hoặc '$ (tài liệu) .scrollTop (0);' anyway thanks hoạt động tốt. – zulucoda

+0

không hoạt động trên safari – Ben

+4

Nhưng điều này -> http://stackoverflow.com/a/18633915/102133. – Ben

7

Kiểm tra jQuery .scrollTop() chức năng here

Nó sẽ giống như

$(document).load().scrollTop(0); 
+1

Tôi muốn bỏ phiếu nhưng có vẻ như tôi đã bỏ phiếu và bây giờ nó bị khóa:/xấu của tôi. –

8

Bạn cũng có thể thử

$(document).ready(function(){ 
    $(window).scrollTop(0); 
}); 

Nếu bạn muốn cuộn ở vị trí x hơn bạn có thể thay đổi giá trị 0 thành x.

+0

Cảm ơn ankit các tác phẩm của nó hoàn hảo cho tôi. – Hardik

+0

Niềm vui của tôi ... Hardik –

28

Câu trả lời ở đây không có tác dụng đối với safari, document.ready thường được kích hoạt quá sớm.

Ought sử dụng sự kiện beforeunload đó ngăn cản bạn thực hiện một số hình thức setTimeout

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
+1

Thêm chức năng sau khi cuộn: $ ('html'). Văn bản (''); , vì vậy xe đẩy sẽ được đặt lại – user956584

+1

@Userpassword Bạn không nghĩ $ ("html"). remove() sẽ tốt hơn? – Ben

83

Đối với một đơn giản thực hiện đồng bằng JavaScript:

window.onbeforeunload = function() { 
 
    window.scrollTo(0, 0); 
 
}

+1

Cách để biến mọi thứ trên đầu của nó! Đây là phương pháp đáng tin cậy nhất. Cảm ơn! – ctrlplusb

+0

@ctrlplusb - vui vì bạn thấy nó hữu ích :) – ProfNandaa

+0

Mã đẹp .. đang hoạt động ... – Vishnu

4
<script> location.hash = (location.hash) ? location.hash : " "; </script> 

Đặt tập lệnh ở trên vào <head> thẻ html của bạn. Không chắc chắn cách ứng dụng của một trang hoạt động! Nhưng chắc chắn hoạt động như sự quyến rũ trong các trang thông thường.

2
$(document).ready(function(){ 
    $(window).scrollTop(0); 
}); 

không hoạt động với tôi vì google chrome sẽ chỉ cuộn xuống sau khi tải xong trang. Những gì tôi đã sử dụng là

$(document).ready(function() { 
    var url = window.location.href; 
    console.log(url); 
    if(url.indexOf('#') < 0) { 
     window.location.replace(url + "#"); 
    } else { 
     window.location.replace(url); 
    } 
}); 

// Thao tác này tải trang có dấu # ở cuối. Vì vậy, nó sẽ luôn luôn tải ở đầu trang.

2

Một lần nữa, câu trả lời tốt nhất là:

window.onbeforeunload = function() { window.scrollTo(0,0);

(thats cho phi jQuery, nhìn lên nếu bạn đang tìm kiếm ofr phương pháp JQ)

EDIT: một sai lầm nhỏ của nó "onbeforunload" :) Trình duyệt Chrome và các trình duyệt khác "nhớ" vị trí cuộn cuối cùng sẽ được gỡ xuống, vì vậy nếu bạn đặt giá trị thành 0,0, chỉ cần hủy bỏ trang của bạn, chúng sẽ nhớ là 0,0 và sẽ không cuộn lại đến vị trí scrollbar was :)

2

Câu trả lời ở đây (cuộn trong $(document).ready) không hoạt động nếu có video trong trang. Trong trường hợp đó, trang được cuộn sau khi sự kiện này được kích hoạt, ghi đè tác phẩm của chúng tôi.

câu trả lời tốt nhất nên là:

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
4

Thay vì location.reload(), chỉ cần sử dụng location.href = location.href. Nó sẽ không di chuyển đến vị trí trước đó như location.reload().

Lưu ý: Đây không load lại nếu có bất kỳ # trong URL

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