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 相关文章推荐
jQuery Clone Bug解决代码
Dec 22 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
jQuery事件详解
Feb 23 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
vue a标签点击实现赋值方式
Sep 07 Javascript
vue将文件/图片批量打包下载zip的教程
Oct 21 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实现上传图片生成缩略图示例
2014/04/13 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
ie 调试javascript的工具
2009/04/29 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python求解水仙花数的方法
2015/05/11 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
Python如何生成树形图案
2018/01/03 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
通过cmd进入python的步骤
2020/06/16 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
医院护士的求职信
2014/01/03 职场文书
房地产还款计划书
2014/01/10 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
运动会演讲稿50字
2014/08/25 职场文书
家长学校教学计划
2015/01/19 职场文书
投标邀请书范本
2015/02/02 职场文书
2015年工商所工作总结
2015/05/21 职场文书