这似乎是 Internet Explorer 的一个错误(用 7 和 8 测试)。
更改 window.location.hash 不应导致重新加载,使用哈希值维护状态是一种常见的 JavaScript 技术。
如果您手动加载页面并使用 JavaScript 更改哈希值,它将起作用。
问题是当您被重定向到页面时时,修改哈希将导致重新加载。
要解决此错误,您可以:
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"
明显的缺点是加载页面会导致两个页面请求和渲染,因此您会希望重新加载成为页面加载时首先要做的事情之一。