Javascript 如何为哈希使用location.replace

Javascript 如何为哈希使用location.replace,javascript,html,Javascript,Html,我正在尝试重定向用户而不重新加载页面。因此,如果用户单击,它应该重定向到#link2 问题是,如果我使用location.hash=“link2”,它会在历史记录中添加两个条目,这是我不想要的,因为当用户单击“后退”按钮时,它会转到link1,然后重定向到link2,因此用户基本上无法在不打开访问页面列表的情况下返回 如果我使用location.replace,它会从服务器重新加载整个页面,我也不希望这样 是否有人可以在不添加新历史记录条目的情况下重定向用户 我不想使用replaceState,

我正在尝试重定向用户而不重新加载页面。因此,如果用户单击
,它应该重定向到
#link2

问题是,如果我使用
location.hash=“link2”
,它会在历史记录中添加两个条目,这是我不想要的,因为当用户单击“后退”按钮时,它会转到
link1
,然后重定向到
link2
,因此用户基本上无法在不打开访问页面列表的情况下返回

如果我使用
location.replace
,它会从服务器重新加载整个页面,我也不希望这样

是否有人可以在不添加新历史记录条目的情况下重定向用户

我不想使用
replaceState
,因为它向后兼容不支持HTML5的浏览器。
我也不想使用类似于
event.preventDefault()
的东西,这样用户就可以在他们的浏览器中为链接添加书签,并且它的工作方式也是一样的。

我想您正在寻找。

您也可以使用JavaScript和jQuery处理onclick事件,然后滚动到锚点而不触发浏览器使用jQuery的
.animate()
平滑滚动功能

您是否将
位置.哈希
设置为链接的onclick事件?我可能遗漏了一些重要内容,但为什么不直接链接到
\link2
?因为我想重定向到依赖于其他内容的动态字符串,不是像
link2
这样的静态字符串我刚刚编辑了这个问题,我可以使用这个解决方案,但我想支持旧浏览器您能添加一个垫片/polyfill来处理旧浏览器吗?比如刚刚尝试过,它仍然会创建另一个历史条目