JS监听浏览器关闭、刷新及切换标签页触发事件

本文介绍了浏览器的两个事件:visibilitychange用于检测页面是否被切换到其他标签页,而beforeunload则在页面关闭、刷新或表单提交时触发。作者通过代码示例展示了如何使用这两个事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蛮简单的东西,知道就会,不知道就不会,没什么逻辑可言。简单记录一下,只为加深点儿印象。

visibilitychange

visibilitychange可以监听到浏览器的切换标签页。 

直接上代码: 

<script>
  document.addEventListener('visibilitychange', documentVisibilityChange)

  function documentVisibilityChange() {
    if(document.visibilityState === "hidden") {
      console.log('当前页签隐藏,即打开新页签')
    }
    if(document.visibilityState === "visible") {
      console.log('当前页签显示,即打开当前页签')
    }
  }
</script>

beforeunload 

beforeunload可以监听到页面的关闭,页签切换不会触发

  • 关闭浏览器窗口的时候触发
  • 通过点击当前地址栏或收藏夹进入另一个页面时触发(注意不是打开新页签)
  • 刷新浏览器时触发
Vue.js本身并不能直接监听浏览器窗口或Tab标签的关闭事件,因为这涉及到浏览器原生的行为,不是前端JavaScript可以直接控制的。但是,你可以通过一些手段间接达到这个目的: 1. 使用MutationObserver监听文档的变化:当浏览器窗口关闭或Tab被切换时,`document`对象会发生变化。你可以设置一个MutationObserver来观察这些变化。 ```javascript const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.type === 'childList') { // 检查是否发生了页面卸载或Tab关闭等变化 if (window.isClosing) { // 在这里处理关闭事件 } } }); }); observer.observe(document.body, { childList: true, subtree: true }); // 当需要取消观察时 observer.disconnect(); ``` 2. 使用beforeunload事件:这是一个全局事件,在浏览器试图离开当前页面时触发,但这个事件不能阻止关闭,只能提供一个确认提示给用户。 ```javascript window.addEventListener('beforeunload', (event) => { // 如果你想做些什么操作,比如保存数据,可以在这里执行 console.log('页面即将关闭'); event.preventDefault(); // 取消默认行为(防止刷新页面) return '确定离开吗?'; // 返回自定义消息,浏览器会显示给用户确认 }); ``` 请注意,上述方法都不能保证100%准确地检测到所有关闭情况,因为它们依赖于用户的交互,而浏览器可能会有额外的限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会说法语的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值