2012-02-28 73 views
10

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

谢谢

+2

你将不得不使用cookies花花公子。 – 2012-02-28 15:50:57

回答

6

事件不存在,只有当页面第一次加载时才会触发。

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

注意:除非您可以将此信息存储在数据库中的用户级别,否则此方法永远不会是错误的证据。否则,只要用户清除他们的cookies或者您选择的任何方法,“第一次加载”的代码就会再次触发。

+4

他说什么。 Jquery(和一般的JavaScript)在页面加载之间没有固有的持久性。 – 2012-02-28 15:54:18

16

你将不得不使用cookie来存储第一负载信息:

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

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

注:以上示例使用jQuery Cookie plugin

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函数,那么现在我知道该用户是否刚刚加载了页面,或者他们是否已经在页面上。

+0

“我测试过$(document).ready,每次页面加载时都会触发,所以这不会提供我需要的内容。” - 显然不是他要求的 – ghosh 2018-03-04 09:39:56

-2

简单的解决方法是使用jQuery“一旦”插件

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