2010-09-08 134 views
81

我正在建立一個網站,我用div s發佈。當我將頁面滾動到位置X後刷新頁面時,頁面將以滾動位置加載爲X.強制頁面滾動位置在HTML頁面刷新頁面頂部

如何強制頁面滾動到頁面刷新的頂部?

  • 我能想到的是一些JS或jQuery的運行作爲頁面的onLoad()功能SET頁面滾動到頂部。但我不知道我該怎麼做。

  • 一個更好的選擇是,如果有一些財產或東西已經加載了其滾動位置爲默認值(即在頂部),這將是一種像頁面加載的頁面,而不是刷新頁面

+0

出人意料的是,沒有一個解決方案,在這裏工作對我來說任何#這不會重新加載,但是這一次做的:http://stackoverflow.com/a/11486546/470749 – Ryan 2017-02-21 16:17:09

回答

120

您可以使用scrollTop方法去做就DOM ready

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

或'$(document).scrollTop(0);'無論如何謝謝運作良好。 – zulucoda 2012-11-01 16:56:20

+0

在safari上無法正常工作 – Ben 2014-04-26 14:56:57

+4

但是這樣 - > http://stackoverflow.com/a/18633915/102133。 – Ben 2014-04-26 15:02:11

7

檢查jQuery的.scrollTop()功能here

它看起來像

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

我打算投票,但似乎我投票下來,現在它被鎖定:/我的壞。 – 2015-09-29 17:42:04

8

你也可以嘗試

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

如果要在x位置滾動,則可以將0的值更改爲x。

+0

謝謝ankit它的作品非常適合我。 – Hardik 2013-09-24 06:51:06

+0

My Pleasure ... Hardik – 2013-09-25 12:29:25

28

這裏的答案對Safari瀏覽器不適用, document.ready往往被炒得太早。

應當用在beforeunload事件,阻止你的形式做一些setTimeout

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

在滾動函數後添加$('html')。text(''); ,所以童車將被重置 – user956584 2014-06-11 15:19:06

+1

@Userpassword你不覺得$(「html」)。remove()會更好嗎? – Ben 2014-06-11 20:38:44

83

對於一個簡單的平原 JavaScript實現:

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

+1

轉變目標的方法!這是迄今爲止最可靠的方法。謝謝! – ctrlplusb 2017-01-25 21:39:25

+0

@ctrlplusb - 很高興你發現它有用:) – ProfNandaa 2017-01-26 22:43:20

+0

不錯的代碼..工作... – Vishnu 2017-01-29 09:11:26

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

將上述腳本放入您的html的<head>標記中。不確定單個頁面應用程序的行爲如何!但是在正常的頁面中肯定有魅力。

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

不適合我,因爲谷歌瀏覽器會在頁面加載完成後向下滾動。 我使用的是

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

//這將加載頁面以#結尾。所以它會始終加載在頂部。

2

再次,最好的回答是:

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

(那非jQuery的,看看,如果你正在尋找OFR的JQ法)

編輯:有一點差錯的 「onbeforunload」 :) Chrome和其他瀏覽器「記住」卸載的最後一個滾動位置,所以如果您將該值設置爲0,0只是爲了卸載您的頁面,它們將記住0,0並且不會滾動回到滾動條是:)

2

如果頁面中有視頻,則此處的答案(滾動到$(document).ready)不起作用。在這種情況下,該事件被解僱後,頁面會滾動,覆蓋我們的工作。

最好的回答應該是:

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

相反的location.reload(),只需使用location.href = location.href。它不會像location.reload()那樣滾動到以前的位置。

注:如果在URL