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 去除数组的重复元素
May 04 Javascript
JavaScript中的稀疏数组与密集数组[译]
Sep 17 Javascript
js自定义方法通过隐藏iframe实现文件下载
Feb 21 Javascript
angularjs $http实现form表单提交示例
Jun 09 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
写给vue新手们的vue渲染页面教程
Sep 01 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
解决vue自定义全局消息框组件问题
Nov 22 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 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
php调用自己java程序的方法详解
2016/05/13 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
jquery 图片轮换效果
2010/07/29 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
JSONP之我见
2015/03/24 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
原生js+canvas实现下雪效果
2020/08/02 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
python 判断网络连通的实现方法
2018/04/22 Python
Python中pillow知识点学习
2018/04/30 Python
浅析python的优势和不足之处
2018/11/20 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
python初步实现word2vec操作
2020/06/09 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
美德少年事迹材料
2014/01/23 职场文书
副厂长岗位职责
2014/02/02 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
感谢信格式范文
2015/01/22 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers