Jak odstranit hash z window.location (URL) pomocí JavaScriptu bez obnovení stránky?

Mám URL jako:http://example.com#something , jak odstraním #something , aniž by došlo k obnovení stránky?

Zkusil jsem následující řešení:

window.location.hash = '';

To však neodstraní symbol hash # z adresy URL.

Odpověď

Úvodní otázka:

window.location.href.substr(0, window.location.href.indexOf('#'))

nebo

window.location.href.split('#')[0]

oba vrátí URL bez hash nebo čehokoli za ním.

Pokud jde o vaši úpravu:

Jakákoli změna na window.location spustí aktualizaci stránky. Můžete změnit window.location.hash aniž byste spustili aktualizaci (ačkoli okno vyskočí, pokud váš hash odpovídá id na stránce), ale nemůžete se zbavit znaku hash. Vyberte si, co je horší…

NEJAKTUÁLNĚJŠÍ ODPOVĚĎ

Správná odpověď na to, jak to udělat bez obětování (buď úplného načtení nebo ponechání znaku hash tam), je zde. Tuto odpověď zde ponecháváme s ohledem na to, že byla původní v roce 2009, zatímco správná odpověď, která využívá nová rozhraní API prohlížeče, byla uvedena o 1,5 roku později.