生活服务
移动端H5页面监听页面离开返回并且刷新页面
2025-01-03 11:38  浏览:66

项目中的需求:点击浏览器中的返回按钮,要让页面重新加载资源。因为这部分的资源每次去加载的内容都不一样,如果返回的时候,还是看到原先的内容,那做这个内容块的意义就很小了;而如果用户看完了这部分内容,再返回来的时候,这个地方换成了新的内容,这样就能体现这部分的价值了。

而对于浏览器来说,大部分浏览器的返回是直接使用缓存的,不会执行任何的javascript代码。原因:部分浏览器在后退时不会触发onload事件,這是HTML5世代浏览器新增的特性之一——Back-Forward Cache(简称bfcache)

什么是bfcache

bfcache,即back-forward cache,可称为“往返缓存”,可以在用户使用浏览器的“后退”和“前进”按钮时加快页面的转换速度。这个缓存不仅保存页面数据,还保存了DOM和JS的状态,实际上是将整个页面都保存在内存里。如果页面位于bfcache中,那么再次打开该页面就不会触发onload事件

pageshow事件

这个事件在用户浏览网页时触发,pageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, pageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。

pagehide事件

该事件会在用户离开网页时触发。离开网页有多种方式。如点击一个链接,刷新页面,提交表单,关闭浏览器等。pagehide 事件有时可以替代 unload事件,但 unload 事件触发后无法缓存页面。

persisted属性

pageshow事件和pagehide事件的event对象还包含一个名为persisted的布尔值属性。

  对于pageshow事件,如果页面是从bfcache中加载的,则这个属性的值为true;否则,这个属性的值为false。
  对于pagehide事件,如果页面在卸载之后被保存在bfcache中,则这个属性的值为true;否则,这个属性的值为false。
 

不同的浏览器在对当前窗口‘打开’历史记录中的前一个页面的表现上并不统一,这和浏览器的实现以及页面本身的设置有关系。

解决方案

javascript监听pageshow事件阻止页面进入bfcache

在uc和微信中测试通过,但是在某些安卓手机自带的浏览器中无效。

javascript监听pagehide事件阻止页面进入bfcache

设置meta标签,清除页面缓存

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下
Public指示响应可被任何缓存区缓存
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
:有些情况下设置清除缓存也没有起到作用,我自己做的这个h5页面就没有起到效果。具体情况还是要具体分析。

我遇到的情况

这个iframe中的地址每次刷新页面都会有不同的内容推送给用户。进入iframe中的内容之后,按返回按钮返回来想进行页面自动刷新,为的就是让用户看到新的内容。

做法

使用pageshow进行整个页面刷新

这样可以实现。

后面又觉得不妥,没有因为这个小部分而进行整个页面刷新,想到了另一种思路:因为这个iframe中的内容是动态的,可以对其进行定时器设置,如下

这样也可以实现自己的功能。

最后可以结合一下

这样做也有好处,可以避免使用定时器,对网页的性能也是比较好。但是这个方法在返回的时候,可以看到iframe里面内容的重新加载,会有一个时间间隙。

另外还有两种方法监听页面离开返回

方法一

参考知识点:History详解

https://developer.mozilla.org/zh-CN/docs/Web/API/History_API

方法二

 (只读属性)返回布尔值,表示页面是(true)否(false)隐藏。

    以上就是本篇文章【移动端H5页面监听页面离开返回并且刷新页面】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/4984.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
总局收视率:《以美之名》倒数,《我的后半生》第二,第一是它
总局公布了黄金时段电视剧热度的周榜,在这份榜单中,既有老面孔,也有新作品。其中,《青山是故乡》以极高的收视率在央视一套中
哈尔滨市优化竞争生态和营商环境 营造良好市场消费环境
人民网哈尔滨4月15日电 (韩婷澎、尚城)4月15日,由哈尔滨市人民政府新闻办公室主办的“推动高质量发展 奋力谱写中国式现代化哈尔
纯白性价比新王,助你实现光追自由!电竞叛客RTX5060 Ti X2W开箱
电竞硬件领域的先锋品牌电竞叛客,今日正式发布AXRTX 5060 Ti X2W8/16GB显卡。以突破性架构设计与强悍性能表现,为全球玩家与内
青岛银行高管现场回应:信贷投放重点是什么?客户如何应对“对等关税”?
4月9日,(002948.SZ,03866.HK)举办2024年度业绩说明会。青岛银行董事长景在伦、行长吴显明、副行长陈霜、副行长刘鹏、副行长
电车指南 | 共享充电之桩主篇手机充电桩「电车指南 | 共享充电之桩主篇」
点击蓝字,关注我们 上一期我们给大家介绍了电动汽车很便捷的一种充电方式——“共享充电”,不仅电价较公共桩会便宜些,而且能
就在今晚,准备观赏!
  4月1日将迎来本年度最大的一弯蛾眉月。如果天气晴好,今天傍晚日落后至月落前,大家能看到一弯似柳叶新裁般的月亮悬挂夜空,
华为手机如何轻松连接电脑实现数据传输与管理华为手机连接电脑「华为手机如何轻松连接电脑实现数据传输与管理」
华为如何连接电脑 (How to Connect Huawei to Computer)在现代科技的推动下,手机与电脑之间的连接变得越来越重要。尤其是对于华
春风伴跑燃激情 健康同行启新程
【来源:益阳市人民政府网_部门动态】赛道终点,工作人员向市民宣传健康知识。李胜利摄 4月20日,市卫生健康委员会借市第五届乡
“群聊门”未平,美防长“裙带门”又起
美国联邦政府大规模裁员之时,美国媒体曝出,国防部长皮特·赫格塞思的弟弟菲尔·赫格塞思担任国土安全部要职,在国防部五角大楼