Остановить двойной запуск таймера Jquery на нескольких страницах браузера
В свободное время я работаю над небольшой игрой в Jquery, чтобы изучить Jquery. Основная концепция добавляет очки каждый раз, когда таймер тикает и обновляет счет, который сохраняется в куки. Это таймер, который обрабатывает большинство обновлений:
setInterval(mainTimer, 1000); //set timer
function mainTimer(){
createPage(); //updates the page variables and shows the score
addValues(); //increases the values
}
У меня проблема в том, что люди могут просто открыть несколько страниц, и таймер сработает для каждой из этих страниц. Так что если у вас открыто 4 страницы, счет будет обновляться в 4 раза быстрее.
Я погуглил кучу разных вещей, но не могу найти ничего, что сработало. Способ сделать это был бы знаком, как я догадываюсь, но я, честно говоря, не знаю, с чего начать, поэтому любая помощь приветствуется.
Я прочитал кое-что о функции open.window, чтобы проверить существующие окна, но ничего конкретного не смог.
open.window("foo","bar");
1 ответ
Вы также можете хранить временные метки и предыдущие значения внутри cookie, и проверять совпадения перед их обновлением. Таким образом, на интервале вы проверяете, является ли текущая отметка времени не менее 1000 мс после последней. Если это так, вы обновляете счет и метку времени, если это не так, выдает ошибку.
Тем не менее, любая игра javascript без проверки на стороне сервера склонна к "взлому".