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 相关文章推荐
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
javascript 学习笔记(一)DOM基本操作
Apr 08 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
H5用户注册表单页 注册模态框!
Sep 17 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
微信小程序实现简单评论功能
Nov 28 Javascript
JavaScript TAB栏切换效果的示例
Nov 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中time()和mktime()方法的区别
2013/09/28 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
详解js前端代码异常监控
2017/01/11 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python中GIL的使用详解
2018/10/03 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
python实现登录与注册系统
2020/11/30 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
Delphi软件工程师试题
2013/01/29 面试题
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
大学生受助感言
2015/08/01 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
Python中字符串对象语法分享
2022/02/24 Python