清空window.location.hash时如何避免滚动到页面顶部

时间:2011-04-26 17:00:21

标签: javascript

为什么以下代码会使滚动跳转到页面顶部?

window.location.hash = '' 

有没有办法在没有跳到页面顶部的情况下清空它?

2 个答案:

答案 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中检查后才发现这个错误。