当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何区分location.reload()和用户主动刷新页面?

梁浩涆
2023-05-04

希望达到下面的效果,项目中主动调用location.reload()时,不清空sessionStorage的值。

用户刷新的时候,需要清空sessionStorage的值

要怎么实现呢?

共有2个答案

於子晋
2023-05-04

要区分调用 location.reload() 和用户主动刷新页面,可以使用浏览器的 window.performance.navigation.type 属性来判断。这个属性会告诉你当前页面的导航类型,包括用户点击链接、用户按下前进或后退按钮、用户在地址栏中输入 URL、页面刷新等等。其中,导航类型为 0 表示用户通过点击刷新按钮或者按下 F5 键来刷新页面,而导航类型为 1 表示使用 location.reload() 方法刷新页面。

if (window.performance.navigation.type === 0) {
  // 用户刷新页面,清空 sessionStorage
  sessionStorage.clear();
} else if (window.performance.navigation.type === 1) {
  // 代码调用 location.reload(),不清空 sessionStorage
}
施招
2023-05-04

在调用 location.reload() 之前,弄一个标记:

sessionStorage.setItem('reloaded', 'true');
location.reload();
if (sessionStorage.getItem('reloaded')) {
  sessionStorage.removeItem('reloaded');
} else {
  sessionStorage.clear();
}
 类似资料:
  • 问题内容: 如何使用jQuery刷新页面? 问题答案: 用途: 该函数采用一个可选参数,可以将其设置为强制从服务器而不是从缓存重新加载。该参数默认为,因此默认情况下该页面可能会从浏览器的缓存中重新加载。

  • 两个页面切换,如何禁止刷新呢?不借助浏览器缓存方法,比如localStorage、sessionStorage, 切换会重新刷新页面,想要的结果是第一次切换刷新后,再次切换到当前页面无需刷新,就跟antd的Tabs一样效果 比如下面两个页面,用Radio来互相切换,比如第一个ChildComponents_1页面input输入“测试”内容,切换到ChildComponents_2,再切换Child

  • 问题内容: 我有一个包含IFrame和一个Button的网页,一旦按下按钮,我需要刷新IFrame。如果可能的话,这可能吗?我搜索了,找不到任何答案。 问题答案:

  • 如何刷新__consumer_offsets主题? 我刚刚设置了offsets.retention.minutes=1,重新启动了代理,检查了offsets.retention.minutes=1的日志,但是__consumer_offsets主题的50个分区的大小仍然相同。 为什么?

  • 所以,我是ajax新手,我正在尝试使用ajax和jquery提交表单,我想我已经弄清楚了服务器端的逻辑,因为当我加载页面时,它会自动提交,页面会很快刷新。空白表单将进入数据库,尽管其中有很多表单,因为页面会不断提交每次刷新。所以我认为我的服务器端正在工作,但我不知道该怎么做,不仅要阻止它刷新,还要使用html表单中的提交按钮进行提交。我在html页面中使用了thymeleaf。 这是我的html表

  • 问题内容: 如何强制Web浏览器通过JavaScript硬刷新页面? 硬刷新意味着获取页面的新副本并刷新所有外部资源(图像,JavaScript,CSS等)。 问题答案: 尝试使用: 当此方法接收一个值作为参数时,它将导致该页面始终从服务器重新加载。如果为false或未指定,浏览器 可能会 从其缓存中重新加载页面。