使用jQuery检测首页加载?

Jim*_*ans 10 javascript jquery pageload

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

谢谢

Sar*_*raz 18

您将不得不使用cookie来存储第一个加载信息:

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

   // set cookie now
   $.cookie("cookieName", "firstSet", {"expires" : 7})
}
Run Code Online (Sandbox Code Playgroud)

注意:上面的示例使用jQuery Cookie插件.


Jam*_*ill 8

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

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

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

  • 他说的话.Jquery(和一般的javascript)在页面加载之间没有固有的持久性. (4认同)

Cam*_*gny 6

我刚遇到这个问题,这就是我处理它的方式.通过使用变量跟踪页面第一次加载initialLoad:

var initialLoad = true;

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

    initialLoad = false;

});
Run Code Online (Sandbox Code Playgroud)

然后在其他功能中,您可以这样做:

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

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