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 相关文章推荐
Javascript attachEvent传递参数的办法
Dec 14 Javascript
写自已的js类库需要的核心代码
Jul 16 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
Node.js之网络通讯模块实现浅析
Apr 01 Javascript
详解Node中导入模块require和import的区别
Aug 11 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
Jan 05 Javascript
JavaScript实现捕获鼠标坐标
Apr 12 Javascript
jquery更改元素属性attr()方法操作示例
May 22 jQuery
vue绑定class的三种方法
Dec 24 Vue.js
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关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
对比分析json及XML
2014/11/28 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python实现类的静态变量用法实例
2015/05/08 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
市场营销职业生涯规划书范文
2014/01/12 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
《王二小》教学反思
2014/02/27 职场文书
海飞丝的广告词
2014/03/20 职场文书
2014年卫生工作总结
2014/11/27 职场文书
优秀党员事迹材料
2014/12/18 职场文书
家装电话营销开场白
2015/05/29 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
运动会加油稿50字
2015/07/21 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android