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实现仿腾讯游戏选择
May 14 Javascript
浅析js绑定事件的常用方法
May 15 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
Angular模板表单校验方法详解
Aug 11 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 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调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python实现KNN邻近算法
2021/01/28 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python实现飞机大战小游戏
2019/11/08 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
港湾网络笔试题
2014/04/19 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
股权转让协议书范本
2014/04/12 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
新郎答谢词
2015/01/04 职场文书
校长一岗双责责任书
2015/05/09 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2015暑假假期总结
2015/07/13 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang