Свойство хеша window.location является глупым в двух отношениях.Это один из них;другая - имеет разные значения get и set:
window.location.hash = "hello"; // url now reads *.com#hello
alert(window.location.hash); // shows "#hello", which is NOT what I set.
window.location.hash = window.location.hash; // url now reads *.com##hello
Обратите внимание, что установка свойства hash в '' также удаляет метку хэша;это то, что перенаправляет страницу.Чтобы установить значение хеш-части URL-адреса '', оставляя хеш-метку и, следовательно, не обновляя, напишите это:
window.location.href = window.location.href.replace(/#.*$/, '#');
Нет способа полностью удалить хеш-метку, установленную без обновлениястраница.
ОБНОВЛЕНИЕ 2012:
Как отметили Blazemonger и thinkdj, технологии улучшились.Некоторые браузеры позволяют очистить этот хэштег, но некоторые этого не делают.Чтобы поддержать оба, попробуйте что-то вроде:
if ( window.history && window.history.pushState ) {
window.history.pushState('', '', window.location.pathname)
} else {
window.location.href = window.location.href.replace(/#.*$/, '#');
}