vue中解决微信html5原生ios虚拟键返回不刷新问题


Posted in Javascript onOctober 20, 2020

问题描述:

做微信h5页面时,经过了微信授权才跳转到一级默认路由home.vue中,因此在home页面时在IOS中底部会出现虚拟的返回键,安卓上不会出现。且在IOS点击返回时会跳转到home空白页面不重新加载,但是在安卓机上点击返回键会重新加载。

实现功能:

解决IOS问题(在home页面点返回时路由还是在home页面,并完成重新加载)

分析:

需要在进入页面时加入监听,并在页面离开时移除监听。因为home页面是个滚动列表,所以我采用了keep-alive路由缓存,所以不能在created()和beforeDestroy()生命周期中写,因此我在home.vue中加了组件内的守卫beforeRouteLeave ()在里面移除监听,在activated()中添加监听。
如果页面没有采用路由缓存,则监听事件和移除事件可以在created()和beforeDestroy()这两个生命周期函数中写。

注意:

addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作。
它们都接受3个参数:事件名、事件处理的函数和布尔值。
布尔值参数是true,表示在捕获阶段调用事件处理程序;
如果是false,表示在冒泡阶段调用事件处理程序。

相同事件绑定和解除,需要使用共用函数;如果removeEventListener不生效,可以看看这篇文章:https://blog.csdn.net/amyleeYMY/article/details/83382741

//监听返回按钮,重新加载当前页面
window.history.pushState(state, title, utl)//在页面中创建一个 history 实体,直接添加到历史记中。
参数:state:存储一个对象,可以添加相关信息,可以使用 history.state 读取其中的内容。
title:历史记录的标题(目前浏览器不支持)。
url:创建的历史记录的链接。进行历史记录操作时会跳转到该链接。

最终代码:

home.vue

activated(){
  //在页面中创建一个 history 实体,当实体改变时会触发popstate事件,跳转到当前页面,并重新加载当前页面
  window.history.pushState(null, 'ff', document.URL);
  window.addEventListener('popstate',this.reload,true)
 }
 
 //本来在deactivated中写移除事件监听的,但是发现不能移除,可能这个生命周期是在路由跳转完(keep-alive缓存的组件停用时调用)从而找不到那个this了,所以移除监听失败。
 deactivated(){
   window.removeEventListener('popstate',this.reload,true)
 }
 
 //所以采用组件内的路由守卫beforeRouteLeave,成功解决了移除监听事件。
 beforeRouteLeave (to, from, next) {
  // 导航离开该组件的对应路由时调用
  window.removeEventListener('popstate',this.reload,true) //这个一定要写到next()前面
  next()
 }
methods:{
reload(){
  window.location.reload()//重新加载
 }
}

main.js

import {Component} from "vue-property-decorator";
Component.registerHooks([
 'beforeRouteLeave',
]);

就这样成功的解决IOS返回不刷新问题~欢迎小伙伴来交流

到此这篇关于vue中解决微信html5原生ios虚拟键返回不刷新问题的文章就介绍到这了,更多相关微信html5原生ios虚拟键返回不刷新内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 字符串连接性能优化
Dec 20 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
php利用curl获取远程图片实现方法
Oct 26 Javascript
详解JavaScript逻辑Not运算符
Dec 04 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
vue权限问题的完美解决方案
May 08 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
Apr 13 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 Javascript
原生js实现俄罗斯方块
Oct 20 #Javascript
React实现评论的添加和删除
Oct 20 #Javascript
基于JavaScript实现简单抽奖功能代码实例
Oct 20 #Javascript
微信小程序使用前置摄像头拍照
Oct 22 #Javascript
jQuery实现可以计算进制转换的计算器
Oct 19 #jQuery
jQuery实现计算器功能
Oct 19 #jQuery
vue3为什么要用proxy替代defineProperty
Oct 19 #Javascript
You might like
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
Jquery 学习笔记(一)
2009/10/13 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
10款最好的Web开发的 Python 框架
2015/03/18 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Python学习小技巧总结
2018/06/10 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
优秀士兵个人事迹材料
2014/01/19 职场文书
上课迟到检讨书
2014/01/19 职场文书
大学生自我鉴定书
2014/03/24 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
会计工作态度自我评价
2015/03/06 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python