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 相关文章推荐
使用TextRange获取输入框中光标的位置的代码
Mar 08 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
javascript制作坦克大战全纪录(2)
Nov 27 Javascript
js中toString()和String()区别详解
Mar 23 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
js实现省市级联效果分享
Aug 10 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
element-ui组件中input等的change事件中传递自定义参数
May 22 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 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
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
两种php实现图片上传的方法
2016/01/22 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
使用python实现baidu hi自动登录的代码
2013/02/10 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python线程池threadpool使用篇
2018/04/27 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
《北大荒的秋天》教学反思
2014/04/14 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
检讨书范文
2015/01/27 职场文书
故意杀人案辩护词
2015/05/21 职场文书
学生安全责任协议书
2016/03/22 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
python全面解析接口返回数据
2022/02/12 Python