欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue项目中监听手机物理返回键的实现

程序员文章站 2022-06-15 15:53:24
背景:项目中有一个场景要监听android手机物理返回键,但是app和js的中间件又没提供这个事件的监听,只能百度纯js实现了 第一步: xback.js ;!fun...

背景:项目中有一个场景要监听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可以参考我另外的一篇文章:

第三步:

监听返回键事件

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()
    })
   },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。