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 相关文章推荐
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 Javascript
js 模拟气泡屏保效果代码
Jul 10 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
jQuery中 bind的用法简单介绍
Feb 13 Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
原生js+ajax分页组件
Jan 30 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的控制语句
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
React组件refs的使用详解
2018/02/09 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
python分割和拼接字符串
2013/11/01 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python实现按行分割文件
2019/07/22 Python
python实现飞行棋游戏
2020/02/05 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
生育关怀行动实施方案
2014/03/26 职场文书
病媒生物防治方案
2014/05/13 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS