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

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

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

要怎么实现呢?


回答:

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

sessionStorage.setItem('reloaded', 'true');

location.reload();

if (sessionStorage.getItem('reloaded')) {

sessionStorage.removeItem('reloaded');

} else {

sessionStorage.clear();

}


回答:

要区分调用 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

}


回答:

另外一个 api 被废弃了,但这个功能还是有的。

参见 PerformanceNavigationTiming: type property

以上是 如何区分location.reload()和用户主动刷新页面? 的全部内容, 来源链接: utcz.com/p/934187.html

回到顶部