次のような 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()
。