这似乎是 Internet Explorer 的一个错误(用 7 和 8 测试)。
更改 window.location.hash 不应导致重新加载,并且使用哈希值来维护状态是一种常见的 JavaScript 技术。
如果您手动加载页面并使用 JavaScript 更改哈希,它将起作用。
问题是当您从不同的位置重定向到页面时(即:使用 HTTP 标头“位置”),然后修改哈希将导致重新加载。
要解决此错误,您可以:
1)如果您可以控制重定向,则可以用一些 HTML 替换 Location 标头。
<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"
明显的缺点是加载页面会导致两个页面请求和渲染,因此您希望重新加载是页面加载时执行的第一件事。