我正在使用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和I.E的某些版本上

Microsoft报告Internet Explorer 5.5 link text可能是相同的问题

我不能使用Microsoft建议的解决方案,即捕获事件而不触发它,而只是滚动到 View 中,就像将on.event设置为top.location.hash一样。

最佳答案

Webkit(以及扩展名Chrome)在location.hash中的行为异常。关于它,有一些尚待解决的错误,其中最相关的一个可能是:https://bugs.webkit.org/show_bug.cgi?id=24578,它记录了您在更改location.hash时刷新页面的问题。看来您现在最好的选择是双手合十,希望它能尽快得到解决。

但是我无法重现IE7中的错误,而且您是我所见过的第一个支持IE5.5的人,因此我在那里真的无法为您提供帮助;)

关于javascript - 在帧中设置location.hash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/642947/

10-15 23:39