Как сделать появление объекта (например просто текста) на странице в заданное время по серверу? Например в 15.00 по времени сервера? Проблема в том, что это должно происходить без перезагрузки страницы. Разумеется, что с перезагрузкой всё просто: Код (Text): if (date("H") == 15) { echo "Появление текста"; } Но нужно, чтобы это было без перезагрузки. Как сделать?
хорошо тому, кому всё кажется просто ))) 15:55, например, тоже попадает в это условие. а 16:05 уже не попадает. уточни что именно требуется для задачи: - "любое открытие страницы сегодня между 15:00 и 16:00" или - "любое открытие страницы сегодня после 15:00" или - "один раз для данного посетителя, но не ранее, чем в 15:00" реши это для обычной страницы, затем добавишь "пингующий" таймер на JS и используешь это же решение на стороне сервера
Задача: появление текста на странице без её перезагрузки. Т.е. например 20 пользователей уже находятся на определённой странице (допустим чата) и для всех для них появляется в 15.00 объявление. Даже если на один час, это не важно. Главное чтобы оно появилось без перезагрузки чата.
перезагрузка не имеет значения, если ты будешь думать про данные, а не про внешнее представление. твой чатик обновляет кусок страницы раз в N секунд. если сформулируешь условие неправильно, в течении часа ты получишь 100500 одинаковых сообщений — так понятно? Добавлено спустя 2 минуты 18 секунд: и, б*, совершенно не факт, что обновление произойдет РОВНО в 15:00, поэтому стоит подумать над правильной формулировкой условия.
Не в окне чата. А просто в произвольном месте страницы. Чат - это я для примера, чтобы было понятно, что это страница, на которой находятся много пользователей. И в определённый момент времени появляется сообщение (текст, всплывающее окно - не важно что). Я не знаю как сделать без перезагрузки страницы. С перезагрузкой - всё просто и понятно.
Econaft, ты не видишь реальной проблемы с которой столкнешься. Тебе люди что говорят? может капсом дойдет... 15 ЧАСОВ НАСТУПИЛО А НА ТВОЙ САЙТ НИКТО НЕ ЗАШЕЛ. ДАЛЬШЕ 15:01 пошло, твое обновление в *ОПЕ потому что прое...о твое ровно 15:00
Ну вот прикинь, небыло никого в 15:00. Или по невъебенным форс-мажорным обстоятельствам ровно в 15:00 связи с сервером небыло. А в 15:30 кто-то пришел/восстановился/обновил страницу. Твои действия?
viewtopic.php?f=16&t=49032&p=389744#p389743 повторю без знака вопроса: Вместо 10000 подставь количество оставшихся секунд, помноженных на 1000. По-моему, правильней, если будет всплывать в диапазоне времени. Тогда, в сессиях нужно хранить статус окна, открывалось ли оно в этом диапазоне ранее.
Всё сказано первом посте этой темы. Когда юзер заходит на страницу (один раз то он в любом случае заходит) ему выдаётся время сервера (не локальное). И уже от этого времени идёт отсчёт. В итоге, когда бы кто бы незашёл - ему даётся время сервера. И в окончательном итоге объект всем появляется в одно время по времени сервера. Добавлено спустя 4 минуты 52 секунды: Не нужны сесии. Просто элементарно и тупо нужно открыть всем по времени сервера, например в 15.00. В первом посте это дано с реализацией с перезагрузкой окна. Но мне нужно чтобы без перезагрузки. Можно на примере, как это сделать? Т.е. узнать оставшиеся секунды?
ясно. буквы потрачены зря. https://www.google.ru/search?q=javascript+show+time+left Добавлено спустя 9 минут 32 секунды: раз ты считаешь, что с php-частью ты разобрался, дело только за "обновлением без перезагрузки" — перемещаю тему в "JavaScript и AJAX" (и в личный игнор тебя)
Да, просто на сервере на php узнаёшь оставшиеся секунды, Код (PHP): $tm = time();// текущее время $now_year = (int)date('Y',$tm);// год $now_month = (int)date('m',$tm);// месяц $now_day = (int)date('d',$tm);// день $tm2 = mktime(15, 0, 0, $now_month, $now_day, $now_year);// время окна, сего дня в 15:00:00 $timeleft = $tm2 - $tm;// осталось секунд до 15:00:00 выводишь в том месте документа, где стоит JS функция Код (PHP): <script> <?php if($timeleft>=0){// если открыли страницу до 15:00:00, выводим JS ниже ?> setTimeout(function(){$('.web').fadeIn('fast')}, <?php echo $timeleft ?>000);// 000 для миллисекунд <?php } ?> </script>
Всем стоять. А пользователь может перевести часы. А у пользователя другой регион.(часовой пояс). А у пользователя отключен JS/ И всё! Вариант - решение грамотное. Проверку делать на сервере, с заданным часовым поясом.!!! Второе - проверку включенности JS у юзера. Третье - передача HEAD каждую минуту.(передача вроде копеешьная... но она так же проверит - а открыт ли у пользователя браузер, а активна ли вкладка(если нет то лучше на неё переключить.)) Я незнаю. Может позновато ответил. Но на будущее - если кто так залетит с поиска - учтут эти важные моменты. (Сам делал модальное окно и статусы менеджеров на сайте... там с этим гемором часовых поясов замучался... )
kamael, всё правильно (почти). Но ТС вот и такого достаточно. JS в чате, как думаешь, может быть выключен? Ну если не через мета тег, конечно, обновление, что очень маловероятно. Тогда функция setTimeout слетит?