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的人,所以我无法真正帮助你;)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...