我能确定这个页面赢了吗;如果我使用`location.replace`来更改哈希,则不会重新加载
Can I be sure the page won't reload if I use `location.replace` to change hash?
我使用哈希是为了避免重新加载页面(是的,我知道有一个新的历史API,但无论如何…)
但现在我想更改哈希,而不将其添加到会话历史记录中(即不希望它出现在后退按钮列表中),或者添加它以删除前一个。所以我不想把新的和旧的都列入名单。
我似乎可以使用location.replace
:
location.replace( location.href.replace(/#.+/, '') + '#' + newHash );
在Firefox 29上,它运行得很好,而且由于我只更改了哈希,所以页面不会重新加载。
但它在所有浏览器上都是这样工作的吗(IE,我看着你)?
是的,你可以肯定。为什么replace
方法会做与将window.location
设置为url相同的事情?如果我是你,我会用window.location.hash = "#newhash"
。
LE:或者直接打电话给history.replaceState()
。它与pushState相同,唯一的区别是该方法不会创建新的历史条目。
在用browserling和browserstack测试(测试页面)后,似乎
- 没有浏览器重新加载页面
- 有些浏览器不会替换后退按钮列表中的最后一项
具体来说,我的代码适用于
- Firefox:3
- IE:6
- 铬:6(但不适用于5)
- Safari:5.0.5(但不在4.0上)
- 歌剧:12.10(但不是11.6)
根据IETester的说法,它也适用于IE 5.5。
编辑-以下代码也可以工作(测试页),具有相同的浏览器支持:
location.replace('#' + newHash);
相关文章:
- 如何在浏览器重新加载时保存位置哈希状态
- 我能确定这个页面赢了吗;如果我使用`location.replace`来更改哈希,则不会重新加载
- 使用history.back/forward在哈希更改时重新加载页面
- 在不重新加载页面的情况下更新 URL 哈希
- 当用户将哈希添加到URL时,重新加载浏览器
- 如何将主题标签链接集成到网页中并基于该哈希标签加载模态
- 如何使用 url 哈希在刷新后加载特定页面
- Javascript 使用哈希值重新加载页面
- 加载内容时取决于哈希 URL 参数
- 当 url 哈希更改时强制重新加载
- 更改哈希时重新加载页面
- 基于哈希或查询字符串加载动态内容
- 刷新时从哈希加载页面
- jQuery Mobile是否可以在加载的第一个页面中显示哈希
- 在页面加载时,如果URL哈希与数组中的某个值匹配,则滚动到具有匹配数据加载id属性的元素
- 如何用Javascript加载页面并对其进行MD5哈希处理,以确保它是我们要查找的页面
- AJAX/Jquery/PHP-加载依赖于锚点/哈希标记的页面
- 使用Javascript更改哈希时重新加载页面
- 当点击时,Facebook使用什么来加载新的哈希标签
- 如何在JavaScript中使用对象作为键在循环中加载哈希