2015-08-21 4 views
0

Я работаю над небольшой игрой в JQuery в свое свободное время, чтобы узнать JQuery. Базовая концепция добавляет точки каждый раз, когда таймер тикает и обновляет счет, который хранится в файле cookie. Это таймер, который обрабатывает большинство от обновлений:Остановить таймер 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-игра без проверки на стороне сервера подвержена «взлому».

+0

Спасибо, это определенно может работать. И да, я знаю, что его легко обмануть, но он позволяет открывать несколько вкладок - это просто немного: p – Crecket

+0

Тем не менее, есть причина, по которой вы не просто сохраняете счет в локальной переменной? – DrunkWolf

+0

Я понял, что это неправильный путь. Я просто добавил таймер для сохранения каждые несколько секунд вместо прямого обновления cookie. Спасибо за помощь – Crecket