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 相关文章推荐
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
jqueryUI里拖拽排序示例分析
Feb 26 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
Mar 16 Javascript
全面理解JavaScript中的闭包
May 12 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
js实现无缝滚动图
Feb 22 Javascript
JavaScript常用内置对象用法分析
Jul 09 Javascript
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
微信小程序 拍照或从相册选取图片上传代码实例
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文件操作方法汇总
2015/07/01 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
php多进程应用场景实例详解
2019/07/22 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
js css自定义分页效果
2017/02/24 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python求质数列表的例子
2019/11/24 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
工作表现自我评价
2014/02/08 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
行政监察建议书
2014/05/19 职场文书
世界读书日的活动方案
2014/08/20 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
医院见习报告范文
2014/11/03 职场文书
个人廉政承诺书
2015/04/28 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记