безостановочный Timer
Добрый день. Есть такое намерение - сделать таймер, который, запустившись на странице, будет продолжать отсчет и в случае перехода с этой страницы на другие (побыли 10 сек на другой - вернулись - на таймере соответственно натикало на 10 сек больше - сколько пропустили). И обновляться таймер должен только после отправки формы с введенной информацией.
Возможно ли такое сделать силами javascript? |
Цитата:
при следущем вхождении в функцию считываете текущее время , проверяете разность с глобальной переменной, если примерно равно интервалу таймера ( погрешность 10-20%) - перезаписываете глобальную переменную ждете следующего перезапуска, при превышении разницы в два и более - очевидно вернулись с какой то страницы на текущую Зы - в Ие таймер работает и на нетекущих вкладках , так шо тут непонятка( возможно будет погрешность чуть больше... не наю) |
Deff, тыща смотриЦа круто :yes:
|
nerv_,
спс (мну нравилось 999, хотя имхо - по сравнению с 30000 эт ерунда |
Только пользователь сможет сбросить такой таймер сменой времени компьютера.)
|
не хочется в серверной части проверки делать, чтоб не нагружать.
наверно придется в ajax копать, да? хотя для начала можно и понадеяться на порядочность юзеров и то что они не успеют смахинировать ) |
Цитата:
Дык вроде про клиента речь ? Не вижу в данной идее обращений к серверу Цитата:
к примеру - второй отсчет через 100ms от первого и если в обоих отсчетах разность превышает (хотя событие редкое - чисто спор за интерес |
Да, Deff, спасибо. Попробую.
|
Цитата:
|
<div id="Alert" style="display:none;">Вернулись с иной страницы</div> <script type="text/javascript"> var TekTimer = new Date().getTime(); var interval = 600; var Interval_ID; clearInterval(Interval_ID); Interval_ID = setInterval( function() { var b = new Date().getTime(); //alert((b-TekTimer)< 1.2*interval) if((b-TekTimer)>( 1.2*interval)) document.getElementById('Alert').style.display='block'; //else document.getElementById('Alert').style.display='none'; TekTimer=new Date().getTime(); },interval) </script> |
Deff, спасибо огромное. Но немного не то, смысл какой - если обычный таймер тикает - то при перезагрузке страницы(ф5) или назад в браузере а затем вперед и т.д. - таймер обновляется и снова с исходной точки отсчитывает.
у меня какая идея - беру текущее время, начальный интервал: var TekTimer = new Date().getTime(); var interval = 100; секунд высчитываю время к которому должен закончиться отсчет: var end = TekTimer + interval; (правильно?) а вот при повторном открытии страницы (фактически она же закрывается и по новому открывается? при переходе назад, обновлении?) проверяю текущее время , сравниваю с end и получаю некое значение от которого продолжается отсчет. и только когда происходит document.getElementById("myForm").submit(); отправка формы (происходит перенаправление на ту же страницу с другими параметрами) таймер снова со 100 секунд, отсчитывает как в шахматах, например, онлайн играть блиц - отсчет времени идет даже когда тебя нет на странице |
Часовой пояс GMT +3, время: 12:25. |