Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2018, 14:19
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

Помогите улучшить таймер. Работает только когда пользователь на странице
Прошу помощи в добавлении функции проверки: на странице ли пользователь или нет.
если нет то таймер стоит и ждет когда пользователь зайдет. Сам таймер:
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 то продолжает идти.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2018, 14:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

crystaltrumpet,
if (vtime >= 0 && mya )

window.onfocus = function(){ mya = true; startClock()}
window.onblur = function(){ mya = false; clearTimeout(tm);}

Последний раз редактировалось рони, 11.11.2018 в 14:38.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2018, 14:55
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

Я сделал так Вы сказали но видимо где то я ошибся. не хочет работать.:
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.11.2018 в 15:02.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2018, 15:02
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

http://prntscr.com/lgy9cb
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2018, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

crystaltrumpet,
строки 11 и 12 уберите из функции
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2018, 15:53
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

Так а если я их уберу - это же самые главные строки
как тогда отлеживать события будут?
Я убрал получилось вот так и ничего не работает:
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);
    }
}
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2018, 15:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

crystaltrumpet,
а добавить эти строки после скрипта?
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2018, 15:59
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

Сделал вот так - результат не изменился:
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);}
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2018, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

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;}
Ответить с цитированием
  #10 (permalink)  
Старый 11.11.2018, 16:05
Аспирант
Отправить личное сообщение для crystaltrumpet Посмотреть профиль Найти все сообщения от crystaltrumpet
 
Регистрация: 28.06.2017
Сообщений: 42

Не работает - когда я перехожу на соседнюю вкладку - таймер продолжает работать
Но когда я на странице кликаю вверху - время останавливается
когда внизу - начинает идти
http://prntscr.com/lgyrtj
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт работает только в Firebug photos-masters Элементы интерфейса 4 07.12.2011 19:12
Почему простейший java не работает только в Мазиле, Помогите... androlic Элементы интерфейса 4 05.07.2011 03:18
Интернет магазин работает только в IE Advokatura Internet Explorer 1 02.04.2010 12:45
Скрипт работает только в IE xstp Общие вопросы Javascript 3 13.09.2009 15:22
Спойлер работает только на один объект на странице. Shanks Общие вопросы Javascript 4 10.05.2009 14:53