javascript – 在框架中设置location.hash

前端之家收集整理的这篇文章主要介绍了javascript – 在框架中设置location.hash前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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建议的解决方案,即捕获事件而不是触发它,但只是滚动到视图,因为我使用set top.location.hash作为onLoad事件的一部分.

解决方法

Webkit(以及扩展名,Chrome)与location.hash表现得很奇怪.有一些关于它的开放性错误,最相关的可能是这一个: https://bugs.webkit.org/show_bug.cgi?id=24578,它记录了当location.hash被更改时页面刷新的问题.看起来你现在最好的选择是交叉你的手指,并希望它得到及时修复.

我无法重现IE7中的错误,你是我见过的第一个支持IE5.5的人,所以我无法真正帮助你;)

猜你在找的JavaScript相关文章