我可以在不滚动网页的情况下更新 window.location.hash 吗?

新手上路,请多包涵

使用 JavaScript,有没有办法在不滚动网页的情况下更新 window.location.hash?

我有可点击的标题元素,可以直接在它们下方切换 div 的可见性。单击标题时,我希望在历史记录中显示 /foo#bar,但不希望页面滚动。因此,当离开 /foo#bar 时,我将能够使用后退按钮并使 ID 在 window.location.hash 中的 div 在返回时可见。

这种行为可能吗?

原文由 Jonathon Watney 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 630
2 个回答

这种行为是很有可能的。您应该研究一些为提供此功能而开发的库。

真正简单的历史: http ://code.google.com/p/reallysimplehistory/ SWF地址: http ://www.asual.com/swfaddress/

原文由 Willem 发布,翻译遵循 CC BY-SA 2.5 许可协议

要在不重新加载/滚动页面的情况下更改哈希值,您现在可以简单地使用 html5 history.pushState

 history.pushState(null,null,'#hashexample');

所有主要浏览器都支持它:

http://caniuse.com/历史

MDN:

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history#The_pushState().C2.A0method

还要注意我们在这里使用的最后一个 url 参数,它可以是任何 url,所以它不限于哈希。

原文由 Luca Reghellin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题