首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 判断浏览器是否刷新

在JavaScript中,判断浏览器是否刷新可以通过多种方法实现,以下是一种常见的方法:

基本思路

  1. 利用sessionStorage:在页面加载时设置一个标志,如果这个标志已经存在,则说明页面是刷新的。
  2. 利用performance.navigation:这个API可以提供页面导航的信息,包括是否是通过刷新加载的。

实现方法

方法一:使用sessionStorage

代码语言:txt
复制
// 在页面加载时执行
window.addEventListener('load', function() {
    if (sessionStorage.getItem('isPageRefreshed') === 'true') {
        console.log('页面是通过刷新加载的');
    } else {
        console.log('页面是首次加载的');
        sessionStorage.setItem('isPageRefreshed', 'true');
    }
});

解释

  • 当页面首次加载时,sessionStorage中没有isPageRefreshed项,因此会设置该项为true
  • 如果页面是通过刷新加载的,sessionStorage中已经有isPageRefreshed项,且值为true,因此可以判断页面是通过刷新加载的。

方法二:使用performance.navigation

代码语言:txt
复制
if (performance.navigation.type === performance.navigation.TYPE_RELOAD) {
    console.log('页面是通过刷新加载的');
} else {
    console.log('页面是首次加载的或通过其他方式导航来的');
}

解释

  • performance.navigation.TYPE_RELOAD的值为1,表示页面是通过刷新加载的。
  • 其他值(如0表示通过导航加载,2表示通过历史记录加载)可以用来区分不同的加载方式。

注意事项

  • performance.navigation API在一些现代浏览器中可能已经被弃用,建议使用performance.getEntriesByType('navigation')来替代。

方法三:使用performance.getEntriesByType

代码语言:txt
复制
window.addEventListener('load', function() {
    const navigationEntries = performance.getEntriesByType('navigation');
    if (navigationEntries.length > 0 && navigationEntries[0].type === 'reload') {
        console.log('页面是通过刷新加载的');
    } else {
        console.log('页面是首次加载的或通过其他方式导航来的');
    }
});

解释

  • performance.getEntriesByType('navigation')返回一个包含导航信息的数组。
  • 检查数组中的第一个元素(通常是当前页面的导航信息),如果其type属性为reload,则表示页面是通过刷新加载的。

应用场景

  • 数据初始化:在页面刷新时,可能需要重新初始化一些数据或状态。
  • 用户体验优化:根据页面加载方式,可以提供不同的用户体验,例如在刷新时显示加载动画。
  • 统计分析:记录页面刷新次数,用于分析用户行为。

通过以上方法,你可以有效地判断浏览器是否刷新,并根据需要执行相应的逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • js判断浏览器是否支持flash的方法

    传统浏览器可以使用window.ActiveXObject检查浏览器是否启用相关的控件。...检查浏览器是否启用flash控件,需要先检查浏览器是否支持ActiveXObject,可以使用typeof检查window.ActiveXObject是否等于undefined,语法: typeof window.ActiveXObject...谷歌、火狐、微软Edge、Safari等现代浏览器不支持ActiveXObject,它们支持navigator.plugins检查浏览器插件,因此谷歌、火狐等浏览器都可以使用navigator.plugins...检查浏览器是否启用flash插件,可以使用下面的代码返回flash插件: var swf = navigator.plugins['Shockwave Flash']; 封装一个兼容性代码: function...true : false; }; 上面的hasUsableSWF函数检查浏览器是否支持flash,如果支持返回true, 否则返回false.

    6.5K20

    浏览器判断是否安装APP

    解决方案: 面临2个问题:一是如何唤起本地app,二是如何判断浏览器是否安装了对应app 1、 如何唤起本地app 方法一:ios与Android都支持一种叫做schema协议的链接 方法二:在ios...postId=7125" /> 1.1 通过schema唤醒app url schema唤醒本地app的支持不是很友好,在浏览器当中都支持。...所以我们一般都会再做一个让用户通过浏览器打开页面的一个引导页。通过浏览器作为中转,来唤醒app。 用法 首先需要被唤醒的app 应该配置自己的url schema 他可以配置多个。...如何判断本地是否安装了app 首先我们可以确认的是,在浏览器中无法明确的判断本地是否安装了app。因此我们必须采取一些取巧的思路来解决这个问题。...,当我们尝试激活schema link的时候,若本地没有安装app,则会跳转到一个浏览器默认的错误页面去了。

    3.5K40

    js判断浏览器信息

    本示例讲述了关于js获取各种浏览器信息,例如微信浏览器,qq内置浏览器,电脑火狐浏览器,qq浏览器等等 判断手机相关浏览器 if (browser.versions.mobile) { //判断是否是移动设备打开...browser代码在下面   var ua = navigator.userAgent.toLowerCase();//获取判断用的对象    if (ua.match(/MicroMessenger/...){           //是否在安卓浏览器打开   } } else {            //否则就是PC浏览器打开        } 浏览器信息汇总 var browser = {  versions...   iPad: u.indexOf('iPad') > -1, //是否iPad       iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器...*Mobile.*/), //是否为移动终端    ios: !!u.match(/\(i[^;]+;( U;)? CPU.

    7.5K10
    领券