ページを更新せずにJavaScriptでwindow.location(URL)からハッシュを削除するにはどうすればいいですか?質問する

ページを更新せずにJavaScriptでwindow.location(URL)からハッシュを削除するにはどうすればいいですか?質問する

次のような URL があります。ページを更新せずに をhttp://example.com#something削除するにはどうすればよいですか?#something

私は次の解決策を試みました:

window.location.hash = '';

#ただし、これによってURL からハッシュ記号が削除されるわけではありません。

ベストアンサー1

この問題を解決することは、今日でははるかに手の届くところにあります。HTML5 履歴 APIロケーションバーを操作して、現在のドメイン内の任意の URL を表示できます。

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

動作デモ:http://jsfiddle.net/AndyE/ycmPt/show/

これは、Chrome 9、Firefox 4、Safari 5、Opera 11.50 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 the page's current scroll offset
        scrollV = document.body.scrollTop;
        scrollH = document.body.scrollLeft;

        loc.hash = "";

        // Restore the scroll offset, should be flicker free
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}

つまり、ハッシュ記号を削除することはできますが、まだすべてのブラウザで削除できるわけではありません。

注: ブラウザ履歴内の現在のページを置き換える場合は、replaceState()の代わりに を使用しますpushState()

おすすめ記事