使用 JavaScript 从 URL 中删除井号
在不刷新页面的情况下从 URL 中删除井号 (#) 需要更多技巧而不是简单地将 window.location.hash 设置为空string.
现代浏览器的优雅解决方案
现代 HTML5 History API 提供了一个优雅的解决方案:
function removeHash() { history.pushState("", document.title, window.location.pathname + window.location.search); }
示例演示:
https://jsfiddle.net/AndyE/ycmPt/
更广泛的浏览器支持
适用于缺乏 History API 支持的浏览器,认为这是有辱人格的script:
function removeHash() { var scrollV = document.body.scrollTop; var scrollH = document.body.scrollLeft; var loc = window.location; if ("pushState" in history) { history.pushState("", document.title, loc.pathname + loc.search); } else { loc.hash = ""; document.body.scrollTop = scrollV; document.body.scrollLeft = scrollH; } }
警告
虽然此解决方案可以删除哈希符号,但值得注意的是,它可能不适用于所有浏览器,尤其是旧版本。
额外注意:
要替换浏览器历史记录中的当前页面,请使用replaceState() 而不是pushState()。
以上是如何使用 JavaScript 从 URL 中删除哈希符号而不重新加载页面?的详细内容。更多信息请关注PHP中文网其他相关文章!