首页 > 解决方案 > JavaScript - 如何知道网页是第一次加载还是刷新后加载?

问题描述

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

就像是:

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

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

脏旗

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

性能导航

窗口对象有这个属性:window.performance.navigation.type它可以有 3 个值:
0 - 由于链接加载的
页面 1 - 重新
加载的页面 2 - 由于返回按钮而加载的页面
但是这不能按预期工作。在首次加载和刷新后,该值始终为“1”。

标签: javascriptpage-refresh

解决方案


您可以使用 Navigation Timing 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>

希望对你有帮助


推荐阅读