首页 > 其他分享 >pageshow和pageshide有什么应用场景呢?

pageshow和pageshide有什么应用场景呢?

时间:2024-12-02 09:23:46浏览次数:10  
标签:pagehide 场景 Cache 用户 pageshide pageshow 页面 加载

pageshowpagehide 事件在前端开发中主要用于处理页面在浏览器中的可见性变化,与用户的直接交互关系不大,更多的是关注页面自身的状态。它们比 visibilitychange 事件更专注于页面本身的加载和卸载状态,而 visibilitychange 则关注页面的可见性,例如用户切换标签页或最小化浏览器。

以下是 pageshowpagehide 的一些应用场景:

  • 恢复页面状态: 当用户使用浏览器的前进后退按钮或者从浏览器历史记录中访问页面时,会触发 pageshow 事件。这时可以使用该事件来恢复页面的状态,例如:

    • 恢复之前填写但未提交的表单数据。
    • 恢复页面的滚动位置。
    • 重新启动被暂停的动画或视频播放。
    • 重新连接 WebSocket 或其他长连接。
  • 清理页面资源: 当用户离开页面时,会触发 pagehide 事件。这时可以使用该事件来清理页面资源,例如:

    • 关闭或取消未完成的异步请求,避免浪费资源。
    • 解除事件绑定,防止内存泄漏。
    • 断开 WebSocket 或其他长连接。
    • 停止计时器或动画。
  • 分析用户行为: 虽然不如专门的分析工具强大,但 pageshowpagehide 可以用来记录用户在页面停留的时间,以及用户是通过前进/后退按钮还是直接访问进入页面的。 配合 performance.navigation.type 可以区分页面加载方式,从而更精确地进行统计。

  • 配合persisted属性优化用户体验: pageshow 事件的 event.persisted 属性可以用来判断页面是否是从缓存中加载的 (Back-Forward Cache, BF Cache)。如果是,则可以避免重复执行一些初始化操作,从而提升页面加载速度和用户体验。 例如,如果页面是从 BF Cache 中加载的,就无需重新发送 Ajax 请求获取数据。

  • 单页应用 (SPA) 路由管理: 在 SPA 中,页面不会完全刷新,因此 pageshowpagehide 可以用来模拟页面生命周期,执行一些类似于组件的 mountedunmounted 的逻辑。

pageshowpagehide vs. unloadload

pageshowpagehideunloadload 容易混淆,但它们有重要的区别:

  • BF Cache: pageshowpagehide 会在页面从 BF Cache 中加载或卸载时触发,而 unloadload 则不会。
  • 页面刷新: unloadload 会在页面刷新时触发,而 pageshowpagehide 则只会在页面前进/后退或关闭时触发。

示例:

window.addEventListener('pageshow', function(event) {
  if (event.persisted) {
    console.log('页面从缓存中加载');
    // 从缓存中恢复页面状态
  } else {
    console.log('页面重新加载');
    // 初始化页面
  }
});

window.addEventListener('pagehide', function(event) {
  console.log('页面即将卸载');
  // 清理页面资源
});

总之,pageshowpagehide 事件为开发者提供了更细粒度的控制,可以更好地管理页面生命周期,优化用户体验,并实现一些特殊的功能。 理解它们与其他类似事件的区别,才能更好地运用它们。

标签:pagehide,场景,Cache,用户,pageshide,pageshow,页面,加载
From: https://www.cnblogs.com/ai888/p/18580907

相关文章

  • 有了解过`getSelection`API吗?怎么使用,有哪些场景?
    getSelection()API是一个用于获取用户在网页上选择的文本的JavaScriptAPI。它返回一个Selection对象,该对象包含有关所选文本的信息,例如所选文本的内容、起始位置和结束位置等。使用方法:constselection=window.getSelection();if(selection.rangeCount>0){//检......
  • 京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • js的sort方法运用场景有哪些?
    JavaScript的sort()方法主要用于对数组的元素进行排序。它有很多应用场景,在前端开发中尤为常见:1.列表排序:这是最常见的应用场景。当需要按照字母顺序、数字大小、日期先后等对列表项进行排序展示时,sort()方法是必不可少的。例如,电商网站上的商品列表,可以根据价格、销......
  • 你知道js的可选链是什么吗?说说你对它的理解,它有什么应用场景?
    我知道JavaScript的可选链操作符。它用?.表示,允许开发者安全地访问嵌套对象的属性,而无需显式地检查每个级别的属性是否存在。如果链中的任何属性为null或undefined,表达式将短路并返回undefined,而不是抛出错误。理解:可选链操作符本质上是一系列短路求值的条件判断的简写......
  • 数字技术助力电力行业低碳化发展路径及典型场景研究报告汇总PDF洞察(附原数据表)
    原文链接:https://tecdat.cn/?p=36371在全球应对气候变化的大背景下,中国积极推进“双碳”战略,一场深刻的能源与经济变革正在展开。本报告合集汇总聚焦于能源领域多方面的关键议题,深入剖析其现状与发展趋势。能源作为中国碳排放的主导因素,火电占比过高致使排放问题突出,而电力行业......
  • 大模型落地场景观察系列:知识库为什么是企业优先落地选择
    迈容智能是一家专注于人工智能及企业自动化解决方案的科技公司,作为国内最早一批投入大模型技术和应用领域研究的厂商之一,我们秉承着“不卷大模型,更注重应用落地”的理念,先后推出了知识问答助手、智能问数系列以及迈容AIAgent平台等一系列大模型产品,已在金融、能源、财务等......
  • canvas的应用场景有哪些?
    在前端开发中,CanvasAPI提供了一个可以通过JavaScript绘制图形的HTML元素。它就像一块画布,开发者可以使用JavaScript代码在上面绘制各种图形、动画以及处理图像数据。以下是一些Canvas的常见应用场景:1.数据可视化:图表:Canvas非常适合创建各种类型的图表,例如线形......
  • 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
    CSS3的Flexbox,即弹性盒布局模型,是一种用于页面布局的强大工具。它提供了一种更有效的方式来排列、对齐和分配容器内项目的空间,即使它们的大小是未知的或动态的。Flexbox解决了传统布局方法(如浮动和定位)在处理复杂布局时的许多限制。核心概念:Flexbox布局由两个主要组成部分......
  • 请说说你对try/catch的理解,平时有在哪些场景会用到呢?
    在前端开发中,try...catch语句是用于处理JavaScript代码中可能发生的运行时错误的重要机制。它允许你优雅地处理异常,防止程序崩溃,并提供更友好的用户体验。理解try...catchtry...catch语句由两个主要代码块组成:try块:包含你认为可能会抛出错误的代码。catch块:包含......
  • SpringBoot-常见场景(超干货,前后端都有,直接上手)
    SpringBoot-常见场景学习所需前端1.热部署​SpringBoot为我们提供了一个方便我们开发测试的工具dev-tools。使用后可以实现热部署的效果。当我们运行了程序后对程序进行了修改,程序会自动重启。​原理是使用了两个ClassLoder,一个ClassLoader加载哪些不会改变的类(第三......