Помогите улучшить таймер. Работает только когда пользователь на странице
Прошу помощи в добавлении функции проверки: на странице ли пользователь или нет.
если нет то таймер стоит и ждет когда пользователь зайдет. Сам таймер:
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, время: 01:54. |