vue中监听返回键问题


Posted in Javascript onAugust 28, 2019

问题:在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿

解决方案:利用 H5的 pushstate(个人理解为增加页面栈)特性与onpopup事件

分析:pushstate 从该方法名我们可以知道 是增加某种状态,会为history对象的length增加长度, 点击返回键的时候会触发onpopup事件(可以联想到 pop其实是数组删除的最后一个元素,符合  ‘栈' 的思想);

          onpopup触发返回上一页,而 pushstate仅仅是从url上进行了改变,不会校验url的内容,页面不会改变,加入当前页面为 xxx/b.html,此时pushState(null,null,'a.html'),可以发现 url变了,而页面的内容并没有改变,我们可以通过这来造成一种无法返回的假象

实施:  

//注意:Dialog是一款弹窗的插件
mounted: function() {
//当前页面挂载的时候调用 返回键的监听方法
this.listeningBack()
}
 //当页面销毁的时候我们也要将事件监听销毁,以免影响其他内容
 destroyed:function(){
  window.onpopstate = null
},
methods:{
//监听返回键
listeningBack() {
var that = this;//window.onpopstate方法指向window,所以要储存一下当前的vue实例
let route = '上一页';//根据业务逻辑的上一页决定
window.onpopstate = function() {
//将当前页面window.location.href 放入页面栈当中
history.pushState({}, null, window.location.href);
Dialog.alert({
title: '标题',
message: '确认返回吗,你所填写的内容将保存为草稿'
}).then(() => {
that.$router.push({
path:route
})
}).catch(
console.log('取消返回,留在当前页面')
);
}
},

}

总结

以上所述是小编给大家介绍的vue中监听返回键问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript整除实现代码
Nov 23 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
详解angular脏检查原理及伪代码实现
Jun 08 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
运用js实现图层拖拽的功能
May 24 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 Javascript
vue项目中js-cookie的使用存储token操作
Nov 13 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 #Javascript
小程序中this.setData的使用和注意事项
Aug 28 #Javascript
微信小程序 可搜索的地址选择实现详解
Aug 28 #Javascript
vue实现标签云效果的方法详解
Aug 28 #Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 #Javascript
TypeScript类型声明书写详解
Aug 28 #Javascript
vue服务端渲染操作简单入门实例分析
Aug 28 #Javascript
You might like
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python isinstance函数介绍
2015/04/14 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
小学生环保演讲稿
2014/04/25 职场文书
村庄绿化方案
2014/05/07 职场文书
白酒营销策划方案
2014/08/17 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
2014会计年终工作总结
2014/12/20 职场文书
学校捐款活动总结
2015/05/09 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android