表象:
在进行正常页面跳转操作后(页面A跳转到页面B),点击浏览器的左上角的'后退'按钮,点击后,可以看到url地址已经发生了变化(url由页面B变为页面A),hash值也已经是上一页的路由,但是浏览器显示的内容却没有发生变化(依旧是页面B)。
可能的解决办法
1、hash模式的情况
- 了解,hash模式的url相关知识 Vue-Router的Hash说起的URL相关知识
- 通过onhashchange 事件处理
// app.vue 入口处:
mounted () {
// 检测浏览器路由改变页面不刷新问题,hash模式的工作原理是hashchange事件
window.addEventListener('hashchange', () => {
let currentPath = window.location.hash.slice(1)
if (this.$route.path !== currentPath) {
this.$router.push(currentPath)
}
}, false)
}
2、尝试用setTimeout来处理
缺点:虽然可以解决,但是setTimeout的合理值无法确定。还有一个问题就要是维护这个定时器,需要在点击之前先清除原有定时器,要不然执行会混乱。
this.$route.back();
setTimeout(() => {
this.$store.commit("error/reset");
}, 50)
3、利用H5提供的history的popstate事件来处理
window.addEventListener("popstate", function(e) {
}, false);
通过回调函数处理
$back(callback) {
if (NativeExternalRequest.back(callback)) {
return;
}
if (callback) {
EventUtil.on(window, 'popstate', (e) => {
EventUtil.off(window, 'popstate');
callback(e);
}, EventUtil.defineOptions({
capture: true,
}));
}
this.$router.back();
}
其他情况
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!