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 相关文章推荐
List the Codec Files on a Computer
Jun 18 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
jQuery实现鼠标划过修改样式的方法
Apr 14 Javascript
jquery超简单实现手风琴效果的方法
Jun 05 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
jquery判断输入密码两次是否相等
Apr 22 Javascript
jQuery无刷新上传之uploadify3.1简单使用
Jun 18 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
vue.js实例todoList项目
Jul 07 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
Aug 04 Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
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中常用的预定义变量小结
2012/05/09 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python中元组,列表,字典的区别
2017/05/21 Python
Python使用pymysql小技巧
2017/06/04 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
预备党员承诺书
2014/03/25 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
简单租房协议书范本
2014/08/20 职场文书
挂靠协议书
2015/01/27 职场文书
岳庙导游词
2015/02/04 职场文书
医院保洁员管理制度
2015/08/05 职场文书
护士业务学习心得体会
2016/01/25 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
volatile保证可见性及重排序方法
2022/08/05 Java/Android