Текст в определенное время
Доброго времени суток!
Помогите, не получается. Как сделать, что бы текст появлялся в определенное время, например в 12:05 или 18:32. |
Попробуй так:
div=document.getElementById("id") setInterval(function(){var time=new Date().getHours(); if((time>2)&&(time<4)) return div.style.display="block"; div.style.display="none"}, 5000) Не самый эффективный вариант, наверное, зато простой. :) |
Таймер, установленный по setInterval (и по setTimeout тоже), неточен, а при переключении на иную вкладку некоторые браузеры так и вовсе его затормаживают. Вот демонстрация с учебника местного:
<div id="timer-interval-log"></div> <p><button onclick="timerIntervalLog()">Запустить повтор с интервалом в 90 мс</button><br /><button onclick="clearInterval(timerIntervalLogTimer)">Остановить повтор</button></p> <script> var timerIntervalLogTimer; function timerIntervalLog() { var arr = []; var d = new Date; timerIntervalLogTimer = setInterval(function() { var diff = new Date - d; if (diff > 100) diff = '<span style="color:red">'+diff+'</span>'; arr.push( diff ); if (arr.length > 25) arr.shift(); document.getElementById('timer-interval-log').innerHTML = arr; d = new Date; }, 90); } </script> То есть, надо либо проводить калибровку каждую определенную итерацию и при переключении пользователя на страницу (window.onfocus), либо тикать таймер на сервере, и через long-polling подавать сигнал странице, что уже пора чо там делать. |
Erolast,
А зачем там точность до 300ms? Это идиотизм, такие промежутки ловить. Выстави хотя бы 1000, и все нормально работает. |
Тут значимо не столько частое отклонение таймера на миллисекунду, сколько затормаживание при потере страницей фокуса.
|
DenSever51rus,
алгоритм -- получить время до текущего события выставить setTimeout с этим временем и функцией вывода сообщения - если время уже прошло -- никаких таймеров сразу выводим(и как вам нужно) никаких setInterval или повторных вычислений. и на форуме такого 100500 |
Собьется при переключении вкладки.
|
Часовой пояс GMT +3, время: 09:25. |