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

时间:2018-07-03 13:44:46

标签: javascript page-refresh

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

类似的东西:

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

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

脏旗

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

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

performance.navigation

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

1 个答案:

答案 0 :(得分:0)

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

我们可以使用 Navigation Timing API 来实现。您所需要的Navigation Timing API的主界面是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>

希望它对您有帮助