使用 JavaScript 轻松删除 URL 的哈希
问:我有一个类似 http://example.com#something 的 URL,并且我想删除#something而不刷新页面。使用“window.location.hash = ''”不起作用。
答:HTML5 History API 提供了一个优雅的解决方案。这里有一个 JavaScript 函数可以解决这个问题:
function removeHash () { history.pushState("", document.title, window.location.pathname + window.location.search); }
这适用于 Chrome、Firefox、Safari、Opera,甚至 IE 10 等主流浏览器。
对于不支持的浏览器不支持历史API:
function removeHash () { var scrollV, scrollH, loc = window.location; if ("pushState" in history) history.pushState("", document.title, loc.pathname + loc.search); else { // Prevent scrolling by storing the current scroll offset scrollV = document.body.scrollTop; scrollH = document.body.scrollLeft; loc.hash = ""; // Restore the scroll offset to prevent flickering document.body.scrollTop = scrollV; document.body.scrollLeft = scrollH; } }
此解决方案可能不普遍兼容,但它为不支持 History API 的浏览器提供了优雅的降级。
以上是如何在 JavaScript 中轻松删除 URL 的哈希值而不需要重新加载?的详细内容。更多信息请关注PHP中文网其他相关文章!