Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求


Posted in Javascript onSeptember 01, 2020

网上很多博客说监听窗口关闭事件使用window.beforeunload,但是这个监听事件也会在页面刷新的时候执行,经过百度和自己的实际测试,

终于解决了这个问题,代码如下:

mounted() {
   window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
   window.addEventListener('unload', e => this.unloadHandler(e))
  },
  destroyed() {
   window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
   window.removeEventListener('unload', e => this.unloadHandler(e))
  },
  methods: {
   beforeunloadHandler(){
    this._beforeUnload_time=new Date().getTime();
   },
   unloadHandler(e){
    this._gap_time=new Date().getTime()-this._beforeUnload_time;
    debugger
    //判断是窗口关闭还是刷新
    if(this._gap_time<=5){
     //如果是登录状态,关闭窗口前,移除用户
     if(!this.showLoginButton){
      $.ajax({
       url: '/pictureweb/user/remove',
       type: 'get',
       async:false, //或false,是否异步
       
      })
     }
    }
   },
}

window.beforeunload事件在window.unload事件之前执行。同时注意ajax请求方式必须为同步请求,所以不能使用axios,因为axios不能执行同步请求。

补充知识:vue如何在用户要关闭当前网页时弹出提示

效果如下图

Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求

正常 js 页面处理方式

window.onbeforeunload = function (e) {
 e = e || window.event;
 // 兼容IE8和Firefox 4之前的版本
 if (e) {
  e.returnValue = '关闭提示';
 }
 // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
 return '关闭提示';
};

vue 中处理方式

let _this = this
  window.onbeforeunload = function (e) {
   if (_this.$route.name == "dyyPerformanceCenterSale") {
    e = e || window.event;
    // 兼容IE8和Firefox 4之前的版本
    if (e) {
     e.returnValue = '关闭提示1111';
    }
    // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
    return '关闭提示222';
   } else {
    window.onbeforeunload = null
   }
  };

针对很多同学说的没有实现 ,我这里在详细描述一下 方法写在 mounted里面 ,然后 记得把route name替换成自己当前页面。

以上这篇Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js数组Array sort方法使用深入分析
Feb 21 Javascript
没有document.getElementByName方法
Aug 19 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
少女风vue组件库的制作全过程
May 15 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
微信小程序中的列表切换功能实例代码详解
Jun 09 Javascript
vue3.0搭配.net core实现文件上传组件
Oct 29 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 01 #Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 #Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 01 #Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 #Javascript
jQuery实现动态加载瀑布流
Sep 01 #jQuery
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 #Javascript
vue treeselect获取当前选中项的label实例
Aug 31 #Javascript
You might like
我用php+mysql写的留言本
2006/10/09 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php日历制作代码分享
2014/01/20 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
新电JAVA笔试题目
2014/08/31 面试题
地理教师岗位职责
2014/03/16 职场文书
团队拓展活动总结
2014/08/27 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
小学元宵节活动总结
2015/02/06 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python