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 相关文章推荐
js直接编辑当前cookie的脚本
Sep 14 Javascript
JavaScript脚本性能优化注意事项
Nov 18 Javascript
jQuery1.6 类型判断实现代码
Sep 01 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
解析js如何获取css样式
Dec 11 Javascript
JavaScript实现定时页面跳转功能示例
Feb 14 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 Javascript
解决elementui表格操作列自适应列宽
Dec 28 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 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
python动态参数用法实例分析
2015/05/25 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
Python实现时间序列可视化的方法
2019/08/06 Python
Django之模板层的实现代码
2019/09/09 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
python中温度单位转换的实例方法
2020/12/27 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
酒店管理毕业生自荐信
2013/10/24 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
工程催款通知书
2015/04/17 职场文书
发票退票证明
2015/06/24 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS