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

标签 javascript page-refresh

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

类似于:

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

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

脏旗

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

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

性能.导航

window 对象有这个属性:window.performance.navigation.type 可以有 3 个值:
0 - 页面因链接
而加载 1 - 页面已重新加载
2 - 页面因后退按钮
而加载 但是,这没有按预期工作。此值在首次加载和刷新后始终为“1”。

最佳答案

您可以使用 Navigation Timing API 在客户端收集性能数据,然后您可以使用 XMLHttpRequest 或其他技术将这些数据传输到服务器。 Performance 对象提供从浏览器访问性能和时间相关信息的途径。

我们可以使用 Navigation Timing API 来做到这一点。根据您的要求,Navigation Timing API 的主要接口(interface)是 performance.navigation.type,它会检查浏览器中首次加载的 URL 或已加载的 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>

希望对你有帮助

关于JavaScript - 如何知道网页是第一次加载还是刷新后加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156203/

相关文章:

javascript - JavaScript 中的文件路径

javascript - 检查 SWF 是否已成功加载

javascript - JS : How to change the image reference ending value

html - 空元刷新标签是否被忽略或等同于 0?

ios - 刷新 Firebase 数据库

javascript - 如何每隔几秒在php中刷新一个具有打印语句和图像功能的div

javascript - 组合或添加到具有共同值的数组

javascript - 如何在回调中访问正确的“this”?

javascript - 如何在不在新选项卡中打开同一页面的情况下使用javascript刷新另一个页面

spring - 如何防止 Spring MVC 中 F5 上的确认警报