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 相关文章推荐
Prototype Number对象 学习
Jul 19 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
利用jQuery和CSS将背景图片拉伸
Oct 16 Javascript
JavaScript中的工厂函数(推荐)
Mar 08 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
Apr 20 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
关于angular 8.1使用过程中的一些记录
Nov 25 Javascript
Vue vee-validate插件的简单使用
Jun 22 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使用token防止表单重复提交的方法
2016/04/07 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python脚本处理空格的方法
2016/08/08 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
护士的自我鉴定
2014/02/07 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
集中整治工作方案
2014/05/01 职场文书
个人求职信范文
2014/05/24 职场文书
个人安全生产责任书
2014/07/28 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
大学入学感言
2015/08/01 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书