Это похоже на ошибку в Internet Explorer (протестировано с 7 и 8).
Изменение window.location.hash не должно приводить к перезагрузке, и распространенным методом JavaScript является использование хеша для поддержания состояния.
Если вы вручную загрузите страницу и измените хеш с помощью JavaScript, она будет работать.
Проблема в том, что когда вы перенаправлены на страницу из другого места (т. Е. С помощью заголовка HTTP "Location"), изменение хеша приведет к перезагрузке.
Чтобы обойти эту ошибку, вы можете:
1) Если вы можете контролировать перенаправление, вы можете заменить заголовок Location некоторым HTML.
<html>
<head>
<meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
<script>window.location = "__REDIRECT_LOCATION__";</script>
</head>
</html>
2) в противном случае вы можете попробовать перезагрузить страницу, когда она загружена. Чтобы предотвратить повторную загрузку, вам может потребоваться установить cookie.
window.location = window.location; // window.location.reload() didn't work.
In pseudo code:
// if is Internet Explorer
// if ( cookie "reloadPerformed" is not set )
// set cookie "reloadPerformed" = "1"
// reload page
// else
// clear cookie "reloadPerformed"
Очевидным недостатком является то, что загрузка страницы приводит к двухстраничному запросу и рендерингу, поэтому вы захотите, чтобы перезагрузка была одной из первых вещей, которые страница делает при загрузке.