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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
非常不错的一个javascript 类
Nov 07 Javascript
任意位置显示html菜单
Feb 01 Javascript
初学Javascript的一些总结
Nov 03 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
bootstrap table小案例
Oct 21 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
Feb 27 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 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将数组转换成csv格式文件输出的方法
2015/03/14 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
Javascript复制实例详解
2016/01/28 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python机器学习之贝叶斯分类
2018/03/26 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
Python帮你识破双11的套路
2019/11/11 Python
python中判断文件结束符的具体方法
2020/08/04 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
酒店门卫岗位职责
2013/12/29 职场文书
高中化学教学反思
2014/01/13 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
给病人的慰问信
2015/03/23 职场文书
健康教育主题班会
2015/08/14 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js