Определить загрузку первой страницы с помощью jQuery? - PullRequest
10 голосов
/ 28 февраля 2012

Мне нужно определить, когда страница в первый раз загружается в jQuery, чтобы я мог выполнять некоторые действия только тогда, когда страница загружается при первом переходе пользователя на эту страницу.Аналогично кодовой странице на стороне сервера.Я протестировал $ (document) .ready, и он срабатывает каждый раз, когда загружается страница, так что это не дает того, что мне нужно.Я также попробовал функцию загрузки jQuery - она ​​также запускает каждую загрузку страницы.Таким образом, при загрузке страницы примером является то, что у меня есть HTML-тег ввода на странице типа кнопки, и он не запускает обратную передачу (как кнопка asp.net), но он перезагружает страницу и запускает $ (document) .ready

Спасибо

Ответы [ 4 ]

17 голосов
/ 28 февраля 2012

Вам потребуется использовать cookie для хранения информации о первой загрузке:

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

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

Примечание. В приведенном выше примере используется плагин jQuery Cookie .

8 голосов
/ 28 февраля 2012

Событие не существует, которое возникает только при первой загрузке страницы.

Вы должны использовать jQuery .ready() событие , а затем сохранить тот факт, что вы впервые обработали загрузку страницы, используя выбранный вами метод (т. Е. Cookie, переменная сеанса, локальное хранилище и т. Д.). ).

Примечание: Этот метод никогда не будет надежным, если вы не можете сохранить эту информацию на уровне пользователя в БД. В противном случае, как только пользователь очистит свои куки или любой другой метод, который вы выберете, код «впервые загружен» снова сработает.

6 голосов
/ 11 апреля 2014

Я только что столкнулся с этой проблемой, и вот как я справился с ней.Отслеживайте первый раз, когда страница загружается, используя переменную 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 голосов
/ 14 апреля 2016

Простое решение - использовать плагин jQuery "Once"

$(element).once('class-name', function() {
  // your javascript code
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...