为什么以下代码会使滚动跳转到页面顶部?
window.location.hash = ''
有没有办法在没有跳到页面顶部的情况下清空它?
答案 0 :(得分:5)
window.location.hash
会跟踪页面上的当前锚位置。当您将其设置为锚点时,页面将自动转到该锚点。当你删除它时,页面将变为“空白”,这是页面的顶部!
要解决此问题,请执行以下操作:
var scrollPosition = window.style.scrollTop;
window.location.hash = '';
window.style.scrollTop = scrollPosition;
答案 1 :(得分:0)
当我在编写的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中检查后才发现这个错误。