使用jQuery检测首次页面加载?

11

我需要用jQuery检测页面第一次加载,以便在用户第一次导航到该页面时执行某些操作。类似于服务器端代码page.ispostback。我已经测试了$(document).ready,它会在每次页面加载时触发,因此无法提供我所需的内容。我也尝试了jQuery的Load函数 - 它也会在每次页面加载时触发。因此,页面加载的一个示例是,我在页面上有一个类型为按钮(button)的HTML输入标记,并且它不会触发后续请求(如asp.net按钮),但它会重新加载页面并触发 $(document).ready。

谢谢


3
你需要使用 cookie。 - Thomas Clayson
4个回答

19
您需要使用 cookie 存储第一次加载的信息:
if (! $.cookie("cookieName")){
   // do your stuff

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

注意:以上示例使用jQuery Cookie插件


10

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


1
我已经测试了$(document).ready并且它在每次页面加载时都会触发,所以这不会提供我需要的内容。 - Eggcellentos

8

并不存在一个只在页面首次加载时触发的事件。

你应该使用jQuery的.ready()事件,然后使用你选择的方法(如cookie、会话变量、本地存储等)持久化已处理过首次页面加载的信息。

注意:除非你能够将此信息存储在用户级别的数据库中,否则此方法永远不会完全可靠。否则,一旦用户清除了他们的cookies或你选择的任何其他方法,"首次加载"代码将再次触发。


4
他说的是,jQuery(以及JavaScript总体而言)在页面重新加载时没有固有的持久性。 - Ben Barden

-3

简单的解决方案是使用jQuery的“Once”插件

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接