【问题标题】:Detect first page load with jQuery?使用 jQuery 检测首页加载?
【发布时间】:2012-02-28 15:48:35
【问题描述】:

我需要检测页面第一次在 jQuery 中加载的时间,以便我可以仅在用户第一次导航到该页面时加载页面时执行一些操作。类似于服务器端代码 page.ispostbasck。我已经测试了 $(document).ready 并且每次加载页面时都会触发它,所以这不会提供我需要的东西。我也尝试过 jQuery Load 函数——它还会触发每个页面加载。因此,通过页面加载一个示例是,我在按钮类型的页面上有一个 HTML 输入标记,它不会触发回发(如 asp.net 按钮),但它会重新加载页面并触发 $(document).ready

谢谢

【问题讨论】:

  • 你必须使用 cookie 老兄。

标签: javascript jquery pageload


【解决方案1】:

我刚刚遇到了这个问题,这就是我处理它的方式。使用变量initialLoad 跟踪页面首次加载的时间:

var initialLoad = true;

$(document).ready(function() {
    ...
    ...
    ... 

    initialLoad = false;

});

然后在其他函数中,你可以这样做:

if (initialLoad) {
    //Do work that is done when the page was first refreshed/loaded.
} else {
    //Do work when it's not the initial load.
}

这对我很有效。如果用户已经在页面上并且一些 jQuery 函数正在运行,我现在知道该用户是刚刚加载了页面还是已经在页面上。

【讨论】:

  • "我已经测试了 $(document).ready,它在每次页面加载时都会触发,所以这不会提供我需要的东西。" - 显然不是他要求的
【解决方案2】:

您必须使用 cookie 来存储首次加载信息:

if (! $.cookie("cookieName")){
   // do your stuff

   // set cookie now
   $.cookie("cookieName", "firstSet", {"expires" : 7})
}

注意:以上示例使用jQuery Cookie plugin

【讨论】:

    【解决方案3】:

    不存在仅在第一次加载页面时触发的事件。

    您应该使用jQuery's .ready() event,然后坚持您已经使用您选择的方法(即cookie、会话变量、本地存储等)处理了首次页面加载这一事实。

    注意:此方法永远不会是万无一失的,除非您可以将此信息在用户级别存储在数据库中。否则,一旦用户清除了他们的 cookie,或者您选择的任何方法,“首次加载”代码将再次触发。

    【讨论】:

    • 他说了什么。 Jquery(和一般的 javascript)在页面加载之间没有固有的持久性。
    【解决方案4】:

    简单的解决方案是使用 jQuery ‘Once’ 插件

    $(element).once('class-name', function() {
      // your javascript code
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 2013-06-10
      • 2015-02-25
      相关资源
      最近更新 更多