网上很多博客说监听窗口关闭事件使用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如何在用户要关闭当前网页时弹出提示

效果如下图

正常 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 实现监听窗口关闭事件,并在窗口关闭前发送请求就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

监听关闭页面事件 ajax,Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求相关推荐

  1. vue监听浏览器刷新和关闭事件,并在页面关闭/刷新前发送请求

    vue监听浏览器刷新和关闭事件,并在页面关闭/刷新前发送请求 1.需求背景: 2.需求分析: 3.实现方式: 4.实现方式解析: 1)浏览器页面事件基础 2)在mounted监听beforeunloa ...

  2. easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口

    弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用, 然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框, $.messager.confirm和panel的onBeforeClos ...

  3. 【AJAX 笔记】AJAX 基本、HTTP 基本、原生 AJAX 的使用,jQuery / Axios / fetch 发送请求、跨域(JSONP/CORS)

    文章目录 1 Ajax 概述 1.1 AJAX 简介 1.2 XML 简介 1.3 AJAX 的特点 1.3.1 AJAX 的优点 1.3.2 AJAX 的缺点 1.4 AJAX 属性和方法 2. H ...

  4. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  5. 使用$.ajax向服务器发送请求

    使用$.ajax向服务器发送请求 html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  6. Vue中监听页面刷新和关闭beforeunload事件

    代码 在methods中定义事件方法,在mounted 生命周期钩子中绑定事件, 在destoryed钩子中卸载事件 mounted () {window.addEventListener('befo ...

  7. vue微信公众号监听关闭页面

    试了网上找的pagehide,unload,都不管用,后来看到同志说下面的方法好使.用了果然可以,大家可以试试,也欢迎提出建议. addEventListener mounted() {// 微信公众 ...

  8. js监听浏览器关闭页面事件

    window.onbeforeunload = function() {//功能函数 } window.onbeforeunload = function(e) {var e = window.eve ...

  9. vue 组件监听页面切换_vue项目如何监听窗口变化,达到页面自适应?

    [自适应]向来是前端工程师需要解决的一大问题--即便作为当今非常火热的vue框架,也无法摆脱--虽然elementui.iview等开源UI组件库层出不穷,但官方库毕竟不可能满足全部需求,因此我们可以 ...

最新文章

  1. Linux终端运行fasterrcnn,对yolo与fasterrcnn anchors的理解
  2. json.dumps()、json.dump()、json.loads()和json.dumps()的区别
  3. 使用Git上传项目到码云仓库
  4. 实现困境突破:中小企业家的三项修炼
  5. import的用法python_Python导入模块,Python import用法(超级详细)
  6. mongoDB3.4主从复制实现(第一种情况亲测)
  7. Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  8. Redis分布式锁解决抢购问题
  9. Windows下SVN回滚到旧版本(TortoiseSVN)
  10. 基于ipv6的socket通信(TCP)
  11. java 认证考试题,2017年Java认证考试试题
  12. cc2430 外部中断
  13. 关于window10修改默认浏览器闪退的情况
  14. 为何淘宝上的假货打不完?
  15. pyTest官方手册(Release 4.2)之蹩脚翻译(6)
  16. 一文揭开ALBERT的神秘面纱
  17. 最佳 Maya 免费建模插件!
  18. html----烟花代码
  19. 计算机内存不足16g内存,win10 16g内存显示内存不足怎么办_win10 16g内存显示可用7.95g如何恢复...
  20. zabbix php问题 Call to undefined function array_column()

热门文章

  1. ECMAScript面向对象(一)
  2. Spring事务管理(注解式声明事务管理)备忘
  3. Java 9终于要包含Jigsaw项目了
  4. Windows音频编程:Win32 Wave API 的使用
  5. Cocoa编程开发者手册
  6. UML系列——OO Unit4分析和学期总结
  7. 自己在项目中写的一个Jquery插件和Jquery tab 功能
  8. android开发环境的调研
  9. ASP.NET 页面缓存 @ OutputCache
  10. SecureCRT 基本设置