首页 >web前端 >js教程 >如何在 JavaScript 中轻松删除 URL 的哈希值而不需要重新加载?

如何在 JavaScript 中轻松删除 URL 的哈希值而不需要重新加载?

Barbara Streisand
Barbara Streisand原创
2024-11-30 04:11:10434浏览

How to Effortlessly Remove a URL's Hash in JavaScript Without Reloading?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn