我正在使用 ajax 来更新框架中页面的位置。但是在设置哈希的位置时(特别是在 Chrome 和某些版本的 IE(5.5)上,但偶尔在 IE7 上)页面正在重新加载。
以下 html 演示了该问题。
主框架.... frame.html 是
<html><head>
<frameset rows="*">
<frame src=sethash.html frameborder=0 scrolling=auto name=somebody>
</frameset>
</head></html>
sethash.html 页面是 .
<html><head>
<script language=JavaScript>
var Count = 0;
function sethash()
{
top.document.location.hash = "hash" + Count;
Count++;
}
</script>
</head>
<body onload="alert('loaded')">
<h1>Hello</h1>
<input type='button' onClick='sethash()' value='Set Hash'>
</body>
</html>`
在大多数浏览器上,加载 frame.html 会在页面加载时显示一次加载的警报。然后,当按下设置哈希按钮时,url 将被更改,但加载的警报的哈希不会再次显示。在 chrome 和某些版本的 IE 上
Microsoft 报告 Internet Explorer 5.5链接文本可能存在相同问题
我不能使用微软建议的解决方案,即捕获事件而不触发它,而只是滚动到视图中,就像使用将 top.location.hash 设置为 onLoad 事件的一部分一样。