场景模拟
- 情景一:
AB页面,A是提交信息页面,B是结果页
A提交完信息后,动态渲染出B,当B页面渲染出来后,再次刷新页面,就会显示A页面,但是希望显示B页面。
- 场景二
视频列表的播放
点击视频列表后,应该更改页面的url参数,但是不立即刷新页面,而是在随后的刷新,刷新点击后的页面
https://developer.mozilla.org/zh-CN/docs/Web/API/History
csdn
利用HTML5的history.replacestate()修改当前页面的URL
function changeURLParam(name, value) {
var url = document.URL,
resultUrl = ''
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
var r = window.location.search.substr(1).match(reg)
var replaceText = name + '=' + value
if (r != null) {
var tmp = url.replace(unescape(name + '=' + r[2]), replaceText)
resultUrl = tmp
} else {
if (url.match('[?]')) {
resultUrl = url + '&' + replaceText
} else {
resultUrl = url + '?' + replaceText
}
}
history.replaceState(null, null, resultUrl)
}
changeURLParam('video_id', currentVideoId)
//----
var stateObject = { result: true }; //可以传递参数
var title = "Wow Title";
var newUrl = location.href;
history.replaceState(stateObject, '', newUrl);
console.info('history', history);
## 对于vue
this.$router.replace({ query: { ...this.$route.query, token: '1111' } })