2014-11-19 2 views
2

Я разрабатываю один таймер, который записывает время. потому что я использую метод setInterval скрипта java, теперь проблема в том, что он не работает должным образом, если вкладка неактивна.setInterval() не работает должным образом для неактивной вкладки

Одно решение, которое я получил, чтобы сохранить старое время и вычесть из нового времени с этой проблемой, если после запуска таймера, если пользователь меняет системное время, это влияет на мой таймер. сообщите мне, есть ли другой способ или решение.

timerInterval = setInterval(function() { 
    seconds=seconds+1; 
    if(seconds==60) 
    { 
     minutes=minutes+1; 
     if(minutes==60) 
     { 
      minutes=0; 
      hours=hours+1; 
     }            
     $("#task"+aData['taskId']).html(("0" + hours).slice(-2)+":"+("0" + minutes).slice(-2)); 
     seconds=0; 
    } 
},1000); 
+1

Делитесь нашими кодами пожалуйста –

+0

Пользователь, меняющий свое системное время, должен быть редким случаем, однако временные интервалы могут меняться от летнего времени или поездки. Я бы рекомендовал использовать объект даты UTC для отслеживания смещения. –

+0

См. Http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs – Kraylog

ответ

0

Попробуйте setTimeout вместо setInterval

setInterval не приоритет функции вызова в зависимости от нагрузки браузера. Я прошел через ту же проблему, и я решил ее использовать. setTimeout

+0

с тайм-аутом одной и той же проблемы, и да, у меня есть одна возможность для этого, я должен много раз останавливать бесконечный цикл setTimeout и начинать новую так это невозможно. –

0

Я сделал плункер, и я отредактировал свое время, но таймер просто продолжает идти.

$(document).ready(function(){ 
    var seconds = 0; 
    var hours = 0; 
    var minutes = 0; 

    setInterval(function(){ 
    seconds++; 
    if(seconds == 60) 
    { 
     seconds=0; 
     minutes++; 
     if(minutes == 60) 
     { 
      minutes=0; 
      hours++; 
     }  
    } 
    $(".timer").html(("0" + hours).slice(-2)+":"+("0" + minutes).slice(-2)+":"+("0" + seconds).slice(-2)); 
    },1000); 
}); 

и в HTML тег, чтобы показать таймер:

<h2 class="timer"></h2> 

http://plnkr.co/edit/yWQWrGxnkgOFvXDoLNhU?p=preview

Позвольте мне знать, если это поможет вам!

+0

вы правы, он работает, если системное время меняется, но после запуска таймера измените свой браузер на другую работу и активируйте этот браузер через 10 минут, вы получите разницу во времени и используйте Chrome-браузер для этого тестирования, если это возможно. –

+0

Я не знаю, я понимаю ваш комментарий, я переключился на другой браузер с другими вкладками, а затем щелкнул обратно примерно через 40 секунд. Мой таймер был на 40 секунд дальше, как и предполагалось. –

+0

не через 40 секунд после 7-8 минут –

Смежные вопросы