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 相关文章推荐
列表内容的选择
Jun 30 Javascript
增强的 JavaScript 的 trim 函数的代码
Aug 13 Javascript
javascript函数声明和函数表达式区别分析
Dec 02 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
SWFUpload多文件上传及文件个数限制的方法
May 31 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
详解vue嵌套路由-params传递参数
May 23 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
vue-cli webpack配置文件分析
May 20 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
原生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
收音机术语解释
2021/03/01 无线电
PHP explode()函数用法、切分字符串
2012/10/03 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
ie 调试javascript的工具
2009/04/29 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Django基础知识与基本应用入门教程
2018/07/20 Python
详解python分布式进程
2018/10/08 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
详解python中list的使用
2019/03/15 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
SQL语句多表联合查询的方法示例
2022/04/18 MySQL