JavaScript - 如何知道网页是第一次加载,还是刷新后加载?

问题描述 投票:0回答:1

我想在网页刷新后执行 JavaScript 函数(任何方式:F5 键、浏览器的刷新键、用户重新输入相同的 URL 或任何其他方法)。 此方法应仅在刷新后执行,而不是在第一个页面加载后执行。

类似:

window.onrefresh = function() { ... }; // of curse, onrefresh isn't real event

我在网上找到了一些解决方案,但没有一个满足我的需求:

脏旗

这个方法很简单,加载时检查标志 - 如果标志不存在,则这是第一次加载,否则设置标志:

  • 将标志保存在local-storage/cookie中。该标志可以是当前日期/时间。 如果加载标志不存在,则创建它 - 这是第一次加载。否则,如果标志存在,则将其与刷新后的当前日期/时间进行比较。
  • 将标记保存在站点 URL 中。该标志将为“#”符号(“#”-不会更改站点导航)。与加载测试之前相同,如果 URL 末尾存在“#”,则这是“刷新”加载,否则这是首次加载 - 我们需要在 URL 末尾添加“#”。

性能.导航

窗口对象具有以下属性:

window.performance.navigation.type
,它可以有 3 个值:
0 - 由于链接而加载页面
1 - 页面已重新加载
2 - 由于“后退”按钮加载页面
然而这并没有按预期工作。在首次加载和刷新后,该值始终为“1”。

javascript page-refresh
1个回答
1
投票

您可以使用导航计时 API 在客户端收集性能数据,然后使用 XMLHttpRequest 或其他技术将其传输到服务器。

Performance
对象提供对浏览器性能和计时相关信息的访问。

我们可以通过使用 Navigation Timing API 来做到这一点。满足您需求的Navigation Timing API的主界面是

performance.navigation.type
,它检查浏览器中第一次加载的URL或是否已加载。这是样本。

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
    <meta charset="utf-8" />
    <title></title>

    <script>
        if (window.performance) {
            alert("Browser Supports");
        }
        if (performance.navigation.type == 1) {
            alert("Reloaded"); 
        } else {
            alert("Not Reloaded"); 
        }
    </script>
 </head>
 <body>
    <h2>testing</h2>
 </body>
</html>

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.