Как обновить часть страницы по таймеру
|
|
|
2015-07-18Дата: Суббота, 18.07.2015, 03:50 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Статус: Offline
|
Доброго времени суток Ув. Likbezz!
Подскажите пожалуйста, возможно ли автоматически обновить страницу, а лучше конкретную часть страницы, по истечению времени на таймере?
За основу взят скрипт отсчета времени типа: "До Нового Года осталось..." и т.д.
Код <script language='javascript' type='text/javascript'> function fulltime () { var time=new Date(); var newYear=new Date("00,00,00,00:00:00"); - [color=red] вывожу заданную дату и время через дополнительные поля[/color] var totalRemains=(newYear.getTime()-time.getTime());
if (totalRemains>1){
var RemainsSec = (parseInt(totalRemains/1000)); var RemainsFullDays=(parseInt(RemainsSec/(24*60*60))); var secInLastDay=RemainsSec-RemainsFullDays*24*3600; var RemainsFullHours=(parseInt(secInLastDay/3600)); if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours}; var secInLastHour=secInLastDay-RemainsFullHours*3600; var RemainsMinutes=(parseInt(secInLastHour/60)); if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes}; var lastSec=secInLastHour-RemainsMinutes*60; if (lastSec<10){lastSec="0"+lastSec};
document.getElementById("RemainsFullDays").innerHTML=RemainsFullDays+"<span id='Rem'> дн</span>"; document.getElementById("RemainsFullHours").innerHTML=RemainsFullHours+"<span id='Rem'> час</span>"; document.getElementById("RemainsMinutes").innerHTML=RemainsMinutes+"<span id='Rem'> мин</span>"; document.getElementById("lastSec").innerHTML=lastSec+"<span id='Rem'> сек</span>"; setTimeout('fulltime()',10) }
else{ document.getElementById("clock").innerHTML="[color=blue]AAA[/color]"; - [color=red]тут отображается информация после истечения времени[/color] } } </script> <style type='text/css'> #clou_xs {position:relative;width:250px;height:280px;left:35px;padding:10px;} #clock {height:150px;right:60px;font-size:13px;} #RemainsFullDays {position:absolute;top:83%;left:32%;font-size:25px;} #RemainsFullHours {position:absolute;bottom:1px;left:40px;font-size:15px;} #RemainsMinutes {position:absolute;bottom:1px;left:87px;font-size:15px;} #lastSec {position:absolute;bottom:1px;left:135px;font-size:15px;} #Rem {font-size:11px;font-weight:normal;} </style> <div id='clou_xs'> <div id='clock'>
[color=blue]BBB[/color] - [color=red]тут отображается информация до истечения времени[/color]
<span id='RemainsFullDays'></span> <span id='RemainsFullHours'></span> <span id='RemainsMinutes'></span> <span id='lastSec'></span> </div> </div> <script language='javascript'>fulltime();</script>
И в роде бы меня все устраивает, но есть маленькое но: в поле "AAA" информация отображается в исходном коде, а из-за этого теряется вся суть моей идеи, к сожалению! Решения, как сделать чтобы в данном поле "AAA" информация нигде не отображалась до истечения времени на таймере, я не нашел!
После чего пришла в голову мысль реализовать за счет обновления страницы, если это сделать, то в будущем хочу использовать оператор: <?if($TIME$="заданное время")?>
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 04:34 | Сообщение # 2 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Erya, Подскажите пожалуйста, возможно ли автоматически обновить страницу, а лучше конкретную часть страницы, по истечению времени на таймере? Да, конечно. Как пример: Автообновление блока статистики через заданное время Script (Обновление блока статистика, Как сделать, JavaScript, GET) Или: Как сделать автообновление комментариев, как в мини чате? (Как в комментариях поставить автообновление, как в мини чате)
И в роде бы меня все устраивает, но есть маленькое но: в поле "AAA" информация отображается в исходном коде, а из-за этого теряется вся суть моей идеи, к сожалению! В данном случае, вариантов два: 1. Кодировать инфу. 2. Использовать условие и перегружать страницу если оно выполнено.
Про первый даже говорить не буду - вариантов и инфы по этому вопросу хватает. А вот про второй.. типа так: Добавляем переменную в скрипт: Код function fulltime () { var info='<?if($TIME$="заданное время")?> тут инфо <?endif?>'; Если переменная пустая в то время как скрипт закончил отсчет, перезагружаем страницу (обновляем переменную) и выводим результат: Код else{ if(info.length){ document.getElementById("clock").innerHTML=info; }else{ window.location.reload(); }; } НО, тут нужно быть осторожным, ибо, если таймер истечет, а переменная будет пустая - коряво составлено условие, например - страница будет перезагружаться постоянно, пока не найдет переменную..
С другой стороны, можно прикрутить тайм-аут - что бы не словить бан от юкоз, типа: Код else{ if(info.length){ document.getElementById("clock").innerHTML=info; }else{ setTimeout(function(){window.location.reload();},3000); }; } Но, опять же, вопрос с бесконечным релоадом при корявом условии, это не решает.
ps Данное условие некорректно Код <?if($TIME$="заданное время")?> - хотя бы потому что заданное время будет == $TIME$ лишь минуту или до следующей перегрузки страницы.. Так же, стоит учитывать локальное время пользователя.
Проще, конечно, это сделать условием, если сам таймер не есть необходимость..
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 05:55 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Статус: Offline
|
Спасибо большое за ответ, в принципе большая часть идеи готова))))Остался думаю лишь один вопрос: Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!?
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 14:08 | Сообщение # 4 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Erya, Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!? Вот в этом условии: Код else{ if(info.length){ document.getElementById("clock").innerHTML=info; }else{ setTimeout(function(){window.location.reload();},3000); }; } видно, что если переменная info не пустая, то сразу выведется она, без всякого обновления. Если же пустая, то страница обновится через три секунды и снова проверит на наличие текста в данной переменной..
Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!?
Проще всего, записать куку, например, на пять минут и, перед обновлением проверить на ее наличие. Типа: Код else{ if(info.length){ document.getElementById("clock").innerHTML=info; }else{ if(!getCookie('clock')){ setCookie('clock',5000); setTimeout(function(){window.location.reload();},3000); }; }; } ...
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 21:03 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Статус: Offline
|
Уважаемый likbezz!
Я дико извиняюсь за отсутствие мозгов)), но прошу Вас подсказать, правильно ли я понимаю работу данного условия:
В данной части кода, если работает таймер то ждемс... если время закончилось, то делаем перезагрузку страницы:
Код else{ if(info.length){ document.getElementById("clock").innerHTML=info; }else{ window.location.reload(); }; }
В этой части код: если $TIME$="Нужное время", то показываем инфу, если не равно "Нужное время", то перезагружаем страницу дальше!
Код var info='<?if($TIME$="$OTHER4$")?> $OTHER1$ <?endif?>';
Т.е. как понимаю я данный пример работы: идет таймер, по истечению времени перезагружается страница с условием <?if($TIME$="$OTHER4$")?> и должно показать нужную инфу на протяжении одной минуты (что в принципе меня очень устраивает), но перезагрузка происходит постоянно, после обнуления таймера....соответственно ни я не пользователи нужной инфы не видят!
Если Вас не затруднит...прокомментируйте пожалуйста, где я сворачиваю не туда!? Спасибо!
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 21:16 | Сообщение # 6 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Erya, В данной части кода, если работает таймер то ждемс... если время закончилось, то делаем перезагрузку страницы: Нет, сначала проверяем, не пуста ли переменная info и, если пуста, то перезагружаем: Код if(info.length){ document.getElementById("clock").innerHTML=info; }else{ window.location.reload(); }
Если переменная пуста, предполагается, что после перезагрузки сработает условие $TIME$="Нужное время", и проверка выведет текст.. Так же, предполагается, что условие синхронизировано с таймером и рабочее. ---
Т.е. как понимаю я данный пример работы: идет таймер, по истечению времени перезагружается страница с условием <?if($TIME$="$OTHER4$")?> и должно показать нужную инфу на протяжении одной минуты (что в принципе меня очень устраивает), но перезагрузка происходит постоянно, после обнуления таймера....соответственно ни я не пользователи нужной инфы не видят! Не совсем так. Вот так: идет таймер, по истечению времени делает проверку переменной info, которая, должна быть не пустой по условию: Код <?if($TIME$="заданное время")?> если же она пустая, то происходит релоад страницы, для того что бы условие сработало. Если же после перезагрузки снова пустая переменная, значит кривое у вас условие или время установлено разное.
Если Вас не затруднит...прокомментируйте пожалуйста, где я сворачиваю не туда!? Вот тут: Код <?if($TIME$="$OTHER4$")?> - это условие никогда не сработает. Надеюсь не нужно объяснять почему?
Если, все же нужно, тогда вам вот сюда: Условные операторы и коды системы юКоз (uCoz) (Справка по условным операторам и кодам системы uCoz), ну или сюда: http://likbezz.ucoz.ru/forum/102
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 21:19 | Сообщение # 7 |
Рядовой
Группа: Проверенные
Статус: Offline
|
Так в роде разжевали, за что Вам огромное спасибо! Буду пытаться исправить!
| | |
|
|
2015-07-18Дата: Суббота, 18.07.2015, 21:21 | Сообщение # 8 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
Erya, Почитайте справку по условиям и проверьте срабатывает ли оно, и уже после того, как работает условие, можно приступать к внедрению его на рабочий сайт.
| | |
|