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

在前端项目中监听浏览器事件,关闭,刷新,后退事件

需求:从页面A 跳到详情页面C,页面A需要保持跳转之前的状态,但是页面A跳转页面B 的时候,需要清空缓存,我主要用react-activation 来实现,在页面A 的路由配置页加 keep-alive ,此时,页面A跳详情C,再返回页面A 的时候,不需要任何处理~但是页面A跳到页面B 的时候,就需要用react-activation 的useAliveController 的clear 方法 来实现~

<span onClick="go('1')">页面A</span><span onClick="go('2')">页面B</span>
<script>
    const go = (key) => {
     if(clear){
     	clear()
     }
    }
</script>

此时已完全满足上面的需求,但是突然发现从A跳到C,在跳到B , 如果点击浏览器上面的后退按钮到B 页面,在从B返回A 的时候,A页面无法输入~~主要是因为A页面没有clear 掉。所以此时需要加一个浏览器后退的监听

 const clearFun = () => {
    if(clear){
      clear()
    }
  }
useEffect(() => {
	window.addEventListener('popstate', clearFun);
	return () =>{
		window.removeEventListener('popstate', clearFun);
	}
	
})

扩展一下浏览器的事件

beforeunload beforeunload事件是在页面即将卸载时触发的,这通常发生在用户关闭或刷新页面之前。我们可以利用这个事件来提示用户确认是否真的需要离开当前页面。
unload 当文档被完全卸载后,unload事件会被触发。该事件可以用来执行一些清理操作,比如清除cookies,记录日志等。
popstate。 浏览器后退按钮触发的是popstate事件,它通常与HTML5的历史API结合使用


http://www.kler.cn/a/414460.html

相关文章:

  • 快速理解微服务中Fegin的概念
  • vue3 + vite + antdv 项目中自定义图标
  • 【docker】安装数据库脚本
  • Android 13 Aosp Settings Android Studio版本
  • STM32F10x 定时器
  • Vue2中 vuex 的使用
  • SNMPv2 项目示例
  • 深度学习day7-BP之梯度下降,过拟合与欠拟合
  • PostgreSQL在Linux环境下的常用命令总结
  • 爬虫获取的数据如何用于市场分析?
  • vue3+vite使用vite-plugin-electron-renderer插件和script-loader插件有冲突
  • 安全基线检查
  • 上传镜像docker hub登不上和docker desktop的etx4.vhdx占用空间很大等解决办法
  • 【分布式】Redis分布式锁
  • C# Winform--ffmpeg图片合成视频以及参数设置
  • GPT视角下,如何在密码学研究中找到属于你的方向?
  • 大模型的认知记录:一次与4o讨论道德经的对话 - “我无法触碰“真实的花草树木”(无名),但通过语言(有名),我可以靠近人类的认知方式。”
  • Redis(配置文件属性解析)
  • vue3 使用XLSX导出
  • openssl编译安装升级为新版本
  • burpsuite(2)最新版burpsuite安装教程
  • k8s集群部署metrics-server
  • 浅谈网络 | 应用层之HTTP协议
  • 微知-git如何添加空目录的几种方式?(.gitkeep, githook, gitconfig)
  • 1.1 STM32_GPIO_基本知识
  • 【释放算力潜能】基于华为鲲鹏920 + 昇腾310B的VPX架构主板