Как удалить все таймеры на странице?
ajaxом подгружаю страницу, где есть таймер. Если подгрузить несколько раз - будет несколько таймеров, которые будут в свое время делать запрос и получится не 1 раз в 5 секунд, а несколько раз в секунду. Как можно удалить таймеры? Или может определить их "местоположение"?
|
таймер типично удаляется по id
tid=setInterval(fu, 100) clearInterval(tid) |
это до перезагрузки. Если после подгрузки ajax попытаться очистить - - пишет, что нет такой переменной, выдаст ошибку и не продолжит.
|
VolodinAS,
Выносите определение переменной до подгружаемых блоков Или создайте объект на window window.Myvar = {} , и к нему привязывайте глобальные передаваемые переменные Вне подгружаемого: Myvar.tid1 = false;Myvar.tid2 = false; Внутри: clearInterval(Myvar.tid1); Myvar.tid1 = setInterval(fu, 100) |
Хм... Большое спасибо, попробую пользоваться
|
Цитата:
Создал отдельный js-файл, там прописал объект TIMERS и через TIMERS.имя_таймера прописал false. Теперь основная история. У меня каждые 5 секунд идет запрос на файл, который отдает юзеру кол-во старых сообщений в чате и количество того, что он прочитал. Если есть разница - подгрузить недостающие. setInterval на эту вещь прописан. В самом низу страницы прописал функцию, которая перебирала объект TIMERS и выводила через console.log() все переменные объекта TIMERS, не равные false. Также, создал еще одну функцию, которая переходит в другой раздел. Там я прописал clearInterval для этой функции: function startGame(par){ if (par == 1){ $('#dark').show(1000); $('#newgame').show(1000); $('#interface').hide(1000); } else { if (par == 2){ var data = $('#startNewGame').serialize(); $('#dark').hide(1000); $('#newgame').hide(1000); clearInterval(TIMERS.checkNewMessanges); // удалить таймер проверки новых сообщений TIMERS.bidSelector = false; TIMERS.gameSelector = false; TIMERS.checkNewMessanges = false; loadPage('startGame<?=$pvp?>',data); } else { if (par == 3){ $('#dark').hide(1000); $('#newgame').hide(1000); $('#interface').show(1000); } } } } И вот, когда я перешел, я увидел в консоли это: Код:
--- |
Часовой пояс GMT +3, время: 20:19. |