使用jQuery检测首页加载?

时间:2012-02-28 15:48:35

标签: javascript jquery pageload

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

由于

4 个答案:

答案 0 :(得分:17)

您必须使用cookie来存储第一个加载信息:

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

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

注意:上面的示例使用jQuery Cookie plugin

答案 1 :(得分:8)

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

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

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

答案 2 :(得分:6)

我遇到了这个问题,这就是我处理它的方式。使用变量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函数,我现在知道该用户是刚刚加载了页面还是已经在页面上。

答案 3 :(得分:-2)

简单的解决方案是使用jQuery'One'插件

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