Помогите улучшить таймер. Работает только когда пользователь на странице
Прошу помощи в добавлении функции проверки: на странице ли пользователь или нет.
если нет то таймер стоит и ждет когда пользователь зайдет. Сам таймер: function startClock() { if (vtime == stattime) { document.getElementById('blockwait').style.display = 'none'; document.getElementById('blocktimer').style.display = ''; } if (vtime >= 0) { document.forms['frm'].clock.value = vtime; vtime --; tm = setTimeout("startClock(0)", 1000); } else { if (tm) clearTimeout(tm); } } Нашел вот такой вариант с созданием переменной mya: window.onfocus = function(){ mya = true; } window.onblur = function(){ mya = false; } но как это реализовать в моем таймере у меня не выходит :-? Плюс у меня еще есть php переменная $add_bonus = 1 или 0; Так вот нужно сделать что когда $add_bonus = 1 то таймер останавливается при переходе на другую вкладку, а когда на 0 то продолжает идти. |
crystaltrumpet,
if (vtime >= 0 && mya ) window.onfocus = function(){ mya = true; startClock()} window.onblur = function(){ mya = false; clearTimeout(tm);} |
Я сделал так Вы сказали но видимо где то я ошибся. не хочет работать.:
function startClock() { if (vtime == stattime) { document.getElementById('blockwait').style.display = 'none'; document.getElementById('blocktimer').style.display = ''; } var mya = true; if (vtime >= 0 && mya ) { document.forms['frm'].clock.value = vtime; vtime --; tm = setTimeout("startClock(0)", 1000); window.onfocus = function(){ mya = true; startClock()} window.onblur = function(){ mya = false; clearTimeout(tm);} } else { if (tm) clearTimeout(tm); nextstep(0, cnt); } } но что то не работает |
|
crystaltrumpet,
строки 11 и 12 уберите из функции |
Так а если я их уберу - это же самые главные строки
как тогда отлеживать события будут? Я убрал получилось вот так и ничего не работает: function startClock() { if (vtime == stattime) { document.getElementById('blockwait').style.display = 'none'; document.getElementById('blocktimer').style.display = ''; } var mya = true; if (vtime >= 0 && mya ) { document.forms['frm'].clock.value = vtime; vtime --; tm = setTimeout("startClock(0)", 1000); } else { if (tm) clearTimeout(tm); nextstep(0, cnt); } } |
crystaltrumpet,
а добавить эти строки после скрипта? |
Сделал вот так - результат не изменился:
function startClock() { if (vtime == stattime) { document.getElementById('blockwait').style.display = 'none'; document.getElementById('blocktimer').style.display = ''; } var mya = true; if (vtime >= 0 && mya ) { document.forms['frm'].clock.value = vtime; vtime --; tm = setTimeout("startClock(0)", 1000); } else { if (tm) clearTimeout(tm); nextstep(0, cnt); } } window.onfocus = function(){ mya = true; startClock()} window.onblur = function(){ mya = false; clearTimeout(tm);} |
crystaltrumpet,
var mya = true, tm; function startClock() { clearTimeout(tm); if (vtime == stattime) { document.getElementById('blockwait').style.display = 'none'; document.getElementById('blocktimer').style.display = ''; } if (vtime > 0 && mya ) { vtime--; document.forms['frm'].clock.value = vtime; tm = setTimeout(startClock, 1000); } } window.onfocus = function(){ mya = true; startClock()} window.onblur = function(){ mya = false;} |
Не работает - когда я перехожу на соседнюю вкладку - таймер продолжает работать
Но когда я на странице кликаю вверху - время останавливается когда внизу - начинает идти http://prntscr.com/lgyrtj |
Часовой пояс GMT +3, время: 06:01. |