vue项目中监听手机物理返回键的实现
程序员文章站
2022-03-10 11:29:31
背景:项目中有一个场景要监听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() }) }, }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: vue组件内部引入外部js文件的方法
下一篇: ES6如何用一句代码实现函数的柯里化