/*
* 替换当前 url 并不导致浏览器页面刷新
* name 参数名
* value 参数值
*/
funcon replaceUrl (name, value) {
var obj = new Object();
obj[name] = value;
obj.rand = Math.random();
History.replaceState(obj, '', '?' + name + '=' + value);
}
发现一个可以改变地址栏,而不导致页面刷新的东东。 Chrome, FF 测试通过,不支持
IE.
实现目标
1. 页面的跳转(前进后退,点击等)不重新请求页面
2. 页面 URL 与页面展现内容一致(符合人们对传统网页的认识)
3. 在不支持的浏览器下降级成传统网页的方式
使用到的 API
history.state
当前 URL 下对应的状态信息。如果当前 URL 不是通过 pushState 或者 replaceState 产
生的,那么 history.state 是 null。
history.pushState(state, title, url)
将当前 URL 和 history.state 加入到 history 中,并用新的 state 和 URL 替换当前。不会
造成页面刷新。
state:与要跳转到的 URL 对应的状态信息。
title:不知道干啥用,传空字符串就行了。
url:要跳转到的 URL 地址,不能跨域。
history.replaceState
用新的 state 和 URL 替换当前。不会造成页面刷新。
state:与要跳转到的 URL 对应的状态信息。
title:不知道干啥用,传空字符串就行了。
url:要跳转到的 URL 地址,不能跨域。
window.onpopstate