vue项目中监听手机物理返回键的实现


Posted in Javascript onJanuary 18, 2020

背景:项目中有一个场景要监听android手机物理返回键,但是app和js的中间件又没提供这个事件的监听,只能百度纯js实现了

第一步:

xback.js

;!function(pkg, undefined){
 var STATE = 'x-back';
 var element;
 var onPopState = function(event){
  event.state === STATE && fire();
 }
 var record = function(state){
  history.pushState(state, null, location.href);
 }
 var fire = function(){
  var event = document.createEvent('Events');
  event.initEvent(STATE, false, false);
  element.dispatchEvent(event);
 }
 var listen = function(listener){
   element.addEventListener(STATE, listener, false);
  }
 ;!function(){
  element = document.createElement('span');
  window.addEventListener('popstate', onPopState);
  this.listen = listen;
  this.record = record(STATE);
  record(STATE);
 }.call(window[pkg] = window[pkg] || {});
}('XBack');

第二步:

加载xback.js文件

<remote-script src="../js/xback.js" @load="loadXBack"></remote-script>

自定义组件remote-script可以参考我另外的一篇文章:https://3water.com/article/178777.htm

第三步:

监听返回键事件

methods: {
  // JavaScript监听手机物理返回键
   loadXBack () {
    window.XBack.listen(() => {
     this.dialog = this.$createDialog({
      type: 'confirm',
      content: `确定返回吗?`,
      confirmButton: {
       text: '确定',
       active: true,
       disabled: false
      },
      cancelButton: {
       text: '取消',
       active: false,
       disabled: false
      },
      onConfirm: () => {
       this.dialog.hide()
       this.close()
      },
      onCancel: () => {
       this.dialog.hide()
       window.history.pushState('x-back', null, window.location.href)
      }
     })
     this.dialog.show()
    })
   },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
编写简单的jQuery提示插件
Dec 21 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
Angular中$broadcast和$emit的使用方法详解
May 22 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
解析原来浏览器原生支持JS Base64编码解码
Aug 12 Javascript
vue组件内部引入外部js文件的方法
Jan 18 #Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 #Javascript
vue实现微信浏览器左上角返回按钮拦截功能
Jan 18 #Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 18 #Javascript
JS数组方法slice()用法实例分析
Jan 18 #Javascript
JS实现横向轮播图(中级版)
Jan 18 #Javascript
vue.js+ElementUI实现进度条提示密码强度效果
Jan 18 #Javascript
You might like
随机广告显示(PHP函数)
2006/10/09 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python scatter函数用法实例详解
2020/02/11 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
英文自荐信范文
2015/03/25 职场文书
实习单位意见
2015/06/04 职场文书
校园新闻稿范文
2015/07/18 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android
基于Python实现对比Exce的工具
2022/04/07 Python