Detect first page load with jQuery?

后端 未结 4 1673
耶瑟儿~
耶瑟儿~ 2021-02-14 08:15

I need to detect the first time a page loads in jQuery so that I can perform some actions only when the page loads the first time a user navigates to that page. Similar to serve

相关标签:
4条回答
  • 2021-02-14 08:47

    An event doesn't exist that fires only when the page is loaded for the first time.

    You should use jQuery's .ready() event, and then persist the fact that you've handled a first time page load using your method of choice (i.e. cookie, session variable, local storage, etc.).

    Note: This method will never be fool proof unless you can store this information at the user level in a DB. Otherwise, as soon as the user clears their cookies, or whatever method you choose, the "first time loaded" code will fire again.

    0 讨论(0)
  • 2021-02-14 08:53

    I just ran into this problem and this is how I handled it. Keep track of the first time the page loads by using a variable initialLoad:

    var initialLoad = true;
    
    $(document).ready(function() {
        ...
        ...
        ... 
    
        initialLoad = false;
    
    });
    

    Then in other functions, you can do this:

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

    This works well for me. If the user is already on the page and some jQuery functions run, I now know if that user just loaded the page or if they were already on the page.

    0 讨论(0)
  • 2021-02-14 09:03

    The easy solution is to use jQuery ‘Once’ plugin

    $(element).once('class-name', function() {
      // your javascript code
    });
    
    0 讨论(0)
  • 2021-02-14 09:08

    You will have to use cookie to store first load information:

    if (! $.cookie("cookieName")){
       // do your stuff
    
       // set cookie now
       $.cookie("cookieName", "firstSet", {"expires" : 7})
    }
    

    Note: Above example uses jQuery Cookie plugin.

    0 讨论(0)
提交回复
热议问题