当前位置: 首页 > news >正文

vue处理关闭浏览器页签和关闭整个浏览器触发事件调后端接口

事项说明 & 建议
🎯 核心事件 beforeunload (用于提示用户), unload (用于发送请求) 
⚠️ 请求方法 推荐使用 fetch (设置 keepalive: true) 或 navigator.sendBeacon(),避免使用异步的axios 
🔍 区分场景 可以尝试通过时间差判断是关闭还是刷新页签,但方法并非完全可靠 
🧹 内存管理 在Vue组件的 beforeDestroy 生命周期中移除事件监听,避免内存泄漏 

实现步骤与代码示例:

1.在Vue组件中添加事件监听
通常在组件的 mounted 生命周期中添加事件监听,并在 beforeDestroy 中移除。

export default {data() {return {beforeUnloadTime: 0,gapTime: 0,hasUnsavedChanges: true // 根据你的实际业务状态设置
    };},mounted() {window.addEventListener('beforeunload', this.handleBeforeUnload);window.addEventListener('unload', this.handleUnload);},beforeDestroy() {// 组件销毁时,务必移除监听器window.removeEventListener('beforeunload', this.handleBeforeUnload);window.removeEventListener('unload', this.handleUnload);},methods: {// ... 其他方法见后续步骤
  }
};

2.处理 beforeunload 事件(可选)

handleBeforeUnload(event) {if (this.hasUnsavedChanges) {// 以下代码可以触发浏览器默认的确认对话框
    event.preventDefault();event.returnValue = ''; // 这是标准属性,但为了兼容旧浏览器,两者都设置return '';}
},

3.处理 unload 事件并发送请求

方法一:使用 fetch API

handleUnload() {// 注意:这里无法处理服务器响应fetch('/api/your-logout-endpoint', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({ userId: 'user123' }),keepalive: true // 关键!确保请求在页面卸载后也能发出
  });
},

方法二:使用 navigator.sendBeacon()

handleUnload() {const data = JSON.stringify({ userId: 'user123' });// 注意:sendBeacon 默认以 'text/plain' 内容类型发送。// 如果需要以 'application/json' 发送,可以使用 Blobconst blob = new Blob([data], { type: 'application/json; charset=UTF-8' });navigator.sendBeacon('/api/your-logout-endpoint', blob);
},

 

http://www.jsqmd.com/news/31010/

相关文章:

  • 从“被动”到“主动”:AI Agent的落地技术分享
  • 2025年江苏护龈牙膏公司权威推荐榜单:美白牙膏/口腔黏膜问题牙膏/牙龈肿痛牙膏源头厂家精选
  • 2025年11月闸阀厂家评测榜:五家国际认证覆盖对比排名
  • 2025年浙江助贷公司权威推荐榜单:银行助贷/民生助粒贷/营运资金周转源头服务商精选
  • 【小沐学WebGIS】基于Three.JS绘制飞行轨迹Flight Tracker(Three.JS/ vue / react / WebGL) - 教程
  • Python环境教程(二)-环境进阶之conda-forge mamba
  • 逆向基础--汇编基础(DOS安装与介绍) (06)
  • 2025 年发电机出租厂商最新推荐排行榜:优质企业盘点,覆盖应急 / 低噪音 / 大功率租赁需求低噪音发电机出租/大功率发电机出租/进口发电机出租公司推荐
  • 2025年上海ai搜索广告企业权威推荐榜单:seo优化/geo产品/ai搜索优化源头企业精选
  • 不放回抽样_生成不重样菜单
  • 2025 年点胶机源头厂家最新推荐排行榜:自动 / 果冻胶 / 无痕内衣 / 烫钻 / 珠宝热熔胶等专用设备优选企业榜单
  • CTFshow Web入门之JWT篇wp
  • 算力成本降低 33%,与光同尘用 Serverless AI 赋能影视商业内容生产
  • 2025 年国内时钟系统厂家最新推荐排行榜:聚焦实力企业,助力各领域精准选品子母钟时钟系统/北斗时钟系统/网络时钟系统/ntp 时钟系统公司推荐
  • 2025年11月黄黑皮美白面霜推荐榜:十款持证淡斑产品口碑排行
  • 2025年11月黄黑皮美白产品评测榜:十款温和提亮面霜排名一览
  • 2025年11月常州光伏公司排名最新榜单:十大企业综合实力对比分析
  • QP(状态机事件驱动型框架)
  • 深圳市德恺检测有限公司:您的CNAS/CMA实验室认证咨询专业伙伴
  • 2025 最新智能食堂秤厂家/推荐排行榜:溯源 / 验收 / 留样秤品牌权威盘点及选购指南食堂验收智能秤/生鲜分拣智能秤/留样智能秤公司推荐
  • 基于GMP的质量管理信息系统 开发概览(功能)
  • 贪心题目小结
  • 贪心题目小结
  • faust-一个可以切换合成器音色的lfo demo
  • AGC052 VP
  • 2025 年液位计厂家最新推荐榜单:涵盖投入式 / 磁致伸缩 / 防爆 / 防水 / 浮球等类型,全面解析行业领先品牌技术与市场优势
  • 2025学习机黑马登场!松鼠AI S20实测两个月——孩子主动刷题、精准提分不是梦
  • 【URP】Unity[后处理]颜色查询ColorLookup
  • 2025年11月常州光伏公司排名:前十强企业综合评估与选择指南
  • 11/4