Vue踩坑之旅(二)—— 监听页面刷新和关闭
栏目: JavaScript · 发布时间: 7年前
内容简介:我在做项目的时候,有一个需求,在离开(跳转或者关闭)购物车页面或者刷新购物车页面的时候向服务器提交一次购物车商品数量的变化。将提交的一步操作放到 beforeDestroy 钩子函数中。但是发现 beforeDestroy 只能监听到页面间的跳转,无法监听到页面刷新和关闭标签页。
我在做项目的时候,有一个需求,在离开(跳转或者关闭)购物车页面或者刷新购物车页面的时候向服务器提交一次购物车商品数量的变化。
将提交的一步操作放到 beforeDestroy 钩子函数中。
beforeDestroy() { console.log('销毁组件')
this.finalCart()},复制代码
但是发现 beforeDestroy 只能监听到页面间的跳转,无法监听到页面刷新和关闭标签页。
所以还是要借助 onbeforeunload
事件。
顺便复习了一下 JavaScript 中的一些加载,卸载事件:
-
页面加载时只执行
onload事件。 -
页面关闭时,先
onbeforeunload事件,再onunload事件。 -
页面刷新时先执行
onbeforeunload事件,然后onunload事件,最后onload事件。
Vue中监听页面刷新和关闭
1. 在methods中定义事件方法:
methods: {
beforeunloadFn(e) {
console.log('刷新或关闭')
// ...
}
}复制代码
2. 在created 或者 mounted 生命周期钩子中绑定事件
created() {
window.addEventListener('beforeunload', e => this.beforeunloadFn(e))
}复制代码
3. 在 destroyed 钩子卸载事件
destroyed() {
window.removeEventListener('beforeunload', e => this.beforeunloadFn(e))
}复制代码
测试了页面刷洗和关闭都能监听到。
回到我自己的项目,可以使用 onbeforeunload
事件和 beforeDestroy
钩子函数结合:
created() {
this.initCart()
window.addEventListener('beforeunload', this.updateHandler)
},
beforeDestroy() {
this.finalCart() // 提交购物车的异步操作},
destroyed() {
window.removeEventListener('beforeunload', this.updateHandler)},
methods: {
updateHandler() {
this.finalCart()
},
finalCart() {
// ...
}
}复制代码
以上所述就是小编给大家介绍的《Vue踩坑之旅(二)—— 监听页面刷新和关闭》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python机器学习
[美] Michael Bowles / 沙嬴、李鹏 / 人民邮电出版社 / 2016-12 / 69.00元
在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知 所措。本书从算法和Python 语言实现的角度,帮助读者认识机器学习。 书专注于两类核心的“算法族”,即惩罚线性回归和集成方法,并通过代码实例来 展示所讨论的算法的使用原则。全书共分为7 章,详细讨论了预测模型的两类核心算法、预测模型的构建、惩罚线性回归和集成方法的具体应用和实现。 本书主要针对想提......一起来看看 《Python机器学习》 这本书的介绍吧!
在线进制转换器
各进制数互转换器
图片转BASE64编码
在线图片转Base64编码工具