首頁 >web前端 >js教程 >如何在 JavaScript 中輕鬆刪除 URL 的雜湊值而不需要重新載入?

如何在 JavaScript 中輕鬆刪除 URL 的雜湊值而不需要重新載入?

Barbara Streisand
Barbara Streisand原創
2024-11-30 04:11:10436瀏覽

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