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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
js定时器(执行一次、重复执行)
Mar 07 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
Apr 18 Javascript
React组件refs的使用详解
Feb 09 Javascript
Vue最新防抖方案(必看篇)
Oct 30 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
JavaScript实现横版菜单栏
Mar 17 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
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
php一个找二层目录的小东东
2012/08/02 PHP
php计算函数执行时间的方法
2015/03/20 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
React组件refs的使用详解
2018/02/09 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python中的lambda表达式用法详解
2016/06/22 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
python类中super() 的使用解析
2019/12/19 Python
大学生开西餐厅创业计划书
2014/02/01 职场文书
经济类毕业生求职信
2014/06/26 职场文书
学校安全管理责任书
2014/07/23 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server