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 相关文章推荐
ExtJS Grid使用SimpleStore、多选框的方法
Nov 20 Javascript
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
js 模仿锚点定位的实现方法
Nov 19 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
Jan 03 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
使用JS中的Replace()方法遇到的问题小结
Oct 20 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
使用vue构建多页面应用的示例
Oct 22 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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字符串函数学习之substr()
2015/03/27 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
javascript常用的方法分享
2015/07/01 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[00:16]热血竞技场
2019/03/06 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
仓库管理专业个人自我评价范文
2013/11/11 职场文书
学生党员思想汇报
2013/12/28 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
股权转让协议书范本
2014/04/12 职场文书
论文答谢词
2015/01/20 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
php png失真的原因及解决办法
2021/11/17 PHP
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技