首页 >web前端 >js教程 >如何使用 JavaScript 删除 URL 哈希而不刷新页面?

如何使用 JavaScript 删除 URL 哈希而不刷新页面?

Patricia Arquette
Patricia Arquette原创
2024-11-30 10:53:10868浏览

How Can I Remove a URL Hash Without Refreshing the Page Using JavaScript?

使用 JavaScript 在不刷新页面的情况下从 URL 中删除哈希

使用 URL 时,通常需要删除哈希片段 (#something )而不导致页面刷新。这可以使用 HTML5 History API 来实现,该 API 允许操作位置栏。

一种解决方案是:

window.location.hash = '';

但是,这只会删除哈希的内容,留下 # URL 中的符号。

更全面的解决方案:

function removeHash() {
    history.pushState("", document.title, window.location.pathname + window.location.search);
}

此方法适用于 Chrome, Firefox、Safari、Opera 和 IE 10。对于不支持的浏览器,可以使用优雅的降级脚本:

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 current scroll offset
        scrollV = document.body.scrollTop;
        scrollH = document.body.scrollLeft;

        loc.hash = "";

        // Restore scroll offset to avoid flickering
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}

通过利用此技术,您可以有效地从 URL 中删除哈希,而无需无论浏览器是否支持,都会导致页面刷新。

以上是如何使用 JavaScript 删除 URL 哈希而不刷新页面?的详细内容。更多信息请关注PHP中文网其他相关文章!

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