爲什麼下面的代碼會使滾動跳轉到頁面的頂部?如何避免在清空時滾動到頁面頂部window.location.hash
window.location.hash = ''
有沒有辦法在沒有跳轉到頁面頂部的情況下清空它?
爲什麼下面的代碼會使滾動跳轉到頁面的頂部?如何避免在清空時滾動到頁面頂部window.location.hash
window.location.hash = ''
有沒有辦法在沒有跳轉到頁面頂部的情況下清空它?
window.location.hash
跟蹤頁面上當前的錨點位置。當您將其設置爲錨點時,該頁面將自動轉到該錨點。當你刪除它時,頁面將會變成頁面頂部的'空白'!
爲了解決這個問題做到以下幾點:
var scrollPosition = window.style.scrollTop;
window.location.hash = '';
window.style.scrollTop = scrollPosition;
謝謝你的答案。順便說一下,如果您將代碼塊縮進四個空格,它將被格式化並更易於閱讀。 – mattalxndr 2011-04-26 18:17:22
在Firefox中,我得到了「window.style未定義」。我決定放棄它,並使用jQuery的'$(window).scrollTop();'因爲我有權訪問它。 – mattalxndr 2011-04-26 18:27:33
document.body.scrollTop或window.scrollTop可能更正確。 – GAgnew 2011-04-26 19:02:23
我遇到了這個行爲,當一個錯誤出現在代碼中,我寫了這是一個setInterval的看着哈希值。
setInterval(function(){
var match = hash.match(/myValue=([^&]+)/);
window.location.hash = '';
if (match && match.length == 2) {
$('#myDiv').val(match[1]);
// RUN CODE
}
}, 250);
在Chrome的代碼不會引起問題,但在Internet Explorer和Firefox它不會讓你滾動,因爲它總是試圖滾動到頁面的頂部。
無論如何,上述代碼無論如何都是「錯誤的」,因爲只有在找到匹配的情況下才會發生散列的清除。很遺憾,我在Firefox中檢查後才發現這個錯誤。
這是一個重複的:http://stackoverflow.com/questions/4715073/window-location-hash-prevent-scrolling-to-the-top – 2011-04-26 17:55:09