Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Текст в определенное время (https://javascript.ru/forum/misc/48753-tekst-v-opredelennoe-vremya.html)

DenSever51rus 15.07.2014 18:36

Текст в определенное время
 
Доброго времени суток!
Помогите, не получается.
Как сделать, что бы текст появлялся в определенное время, например в 12:05 или 18:32.

newobject 16.07.2014 03: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)

Не самый эффективный вариант, наверное, зато простой. :)

Erolast 16.07.2014 08:14

Таймер, установленный по 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 подавать сигнал странице, что уже пора чо там делать.

newobject 16.07.2014 09:10

Erolast,
А зачем там точность до 300ms? Это идиотизм, такие промежутки ловить. Выстави хотя бы 1000, и все нормально работает.

Erolast 16.07.2014 10:55

Тут значимо не столько частое отклонение таймера на миллисекунду, сколько затормаживание при потере страницей фокуса.

рони 16.07.2014 11:56

DenSever51rus,
алгоритм -- получить время до текущего события выставить setTimeout с этим временем и функцией вывода сообщения -
если время уже прошло -- никаких таймеров сразу выводим(и как вам нужно)

никаких setInterval или повторных вычислений. и на форуме такого 100500

Erolast 16.07.2014 14:26

Собьется при переключении вкладки.


Часовой пояс GMT +3, время: 09:25.