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 相关文章推荐
ie与ff下的event事件使用介绍
Nov 25 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
javascript实现全角半角检测的方法
Jul 23 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
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
3
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
理解PHP中的stdClass类
2014/04/18 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
jquery显示隐藏input对象
2014/07/21 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
js创建数组的简单方法
2016/07/27 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
node.js中的事件处理机制详解
2016/11/26 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
解决vue热替换失效的根本原因
2018/09/19 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
Python中的迭代器漫谈
2015/02/03 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python Zmail模块简介与使用示例
2020/12/19 Python
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
小学生班会演讲稿
2014/01/09 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
班主任开场白
2015/06/01 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
Hive日期格式转换方法总结
2022/06/25 数据库