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 相关文章推荐
语义化 H1 标签
Jan 14 Javascript
javascript 四则运算精度修正函数代码
May 31 Javascript
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
javascript中的循环语句for语句深入理解
Apr 04 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
使用 jQuery 实现表单验证功能
Jul 05 jQuery
jQuery zTree插件使用简单教程
Aug 16 jQuery
Vue使用NProgress的操作过程解析
Oct 10 Javascript
JQuery省市联动效果实现过程详解
May 08 jQuery
基于JQuery实现页面定时弹出广告
May 08 jQuery
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 Javascript
vue+iview实现文件上传
Nov 17 Vue.js
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+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
PHP7新特性
2021/03/09 PHP
javascript 一些用法小结
2009/09/11 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python urlopen 使用小示例
2008/09/06 Python
python操作redis的方法
2015/07/07 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python开发简易版在线音乐播放器
2017/03/03 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python操作excel的方法
2018/08/16 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
公务员政审个人总结
2015/02/12 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang