我使用location.hash
滚动到我页面的某个位置。当位置没有哈希时,它工作正常。但如果位置已经具有相同的哈希值,则它不起作用。
例如,location.hash = 'a';
滚动到<div id="a"></div>
。现在location.href
就像http://www.example.com/test.html#a
。如果再次触发location.hash = 'a';
,则窗口不会滚动。这只发生在Chrome和Safari中。
我在Scrolling a page using location.hash in Safari找到了解决方案,但我不想添加不必要的标记。
我也试过location.href = '#a'
。这工作正常,但我担心它会导致页面重新加载。有人有更好的想法吗?
答案 0 :(得分:17)
最好的办法是暂时用一些你知道在页面上不存在的值替换哈希值,然后重新加载试图访问的哈希值。
location.hash = 'a';
// this is the function that changes the hash
function setHash(newHash) {
location.hash = 'someHashThatDoesntExist';
location.hash = newHash;
}
setHash('a');
这应该可以解决问题。