【JavaScript】URLフラグメントのハッシュマーク(#)もろともlocation.hashで削除する

JSでURLフラグメントを制御する際はlocation.hashを使用するかと思うが、ハッシュ文字列を削除する場合に少し詰まった。

location.hash; // example.com#xxx
location.hash = ''; // example.com#

というのも上記のように空文字を代入するだけだと、URLにハッシュマーク(#)が残ってしまいフラグメントを丸ごと削除できない。

解決法

history.pushState({}, '', location.pathname); // example.com

location.pathnameでURLフラグメント無しのパスが取得できるので、それをhistory.pushState()する。