Как обновить часть страницы по таймеру - Скрипты и коды для юкоз - Форум аццкого кодера
Фильтр по:
  

Страница 1 из 11
Модератор форума: likbezz 
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Как обновить часть страницы по таймеру
Как обновить часть страницы по таймеру
Дата: Суббота, 18.07.2015, 03:50 |
Erya
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: 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$="заданное время")?>


 
Дата: Суббота, 18.07.2015, 04:34 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9095
Награды: 23
Репутация: 457
Статус: Unknown


Erya,
Цитата Erya, Сб, 18.07.2015, 03:50:25
Подскажите пожалуйста, возможно ли автоматически обновить страницу, а лучше конкретную часть страницы, по истечению времени на таймере?

Да, конечно.
Как пример:
Автообновление блока статистики через заданное время Script (Обновление блока статистика, Как сделать, JavaScript, GET)
Или:
Как сделать автообновление комментариев, как в мини чате? (Как в комментариях поставить автообновление, как в мини чате)

Цитата Erya, Сб, 18.07.2015, 03:50:25
И в роде бы меня все устраивает, но есть маленькое но: в поле "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$ лишь минуту или до следующей перегрузки страницы..
Так же, стоит учитывать локальное время пользователя.

Проще, конечно, это сделать условием, если сам таймер не есть необходимость..


 
Дата: Суббота, 18.07.2015, 05:55 |
Erya
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline


Спасибо большое за ответ, в принципе большая часть идеи готова))))Остался думаю лишь один вопрос: Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!?

 
Дата: Суббота, 18.07.2015, 14:08 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9095
Награды: 23
Репутация: 457
Статус: Unknown


Erya,
Цитата Erya, Сб, 18.07.2015, 05:55:02
Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!?

Вот в этом условии:
Код
else{    
    if(info.length){
     document.getElementById("clock").innerHTML=info;
    }else{
     setTimeout(function(){window.location.reload();},3000);
    };
}

видно, что если переменная info не пустая, то сразу выведется она, без всякого обновления.
Если же пустая, то страница обновится через три секунды и снова проверит на наличие текста в данной переменной..

Цитата Erya, Сб, 18.07.2015, 05:55:02
Возможно ли сделать, чтобы по истечению времени, страница обновилась всего один раз!?


Проще всего, записать куку, например, на пять минут и, перед обновлением проверить на ее наличие.
Типа:
Код
else{    
    if(info.length){
     document.getElementById("clock").innerHTML=info;
    }else{
    if(!getCookie('clock')){
     setCookie('clock',5000);
     setTimeout(function(){window.location.reload();},3000);
    };
    };
}

...


 
Дата: Суббота, 18.07.2015, 21:03 |
Erya
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: 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$")?> и должно показать нужную инфу на протяжении одной минуты (что в принципе меня очень устраивает), но перезагрузка происходит постоянно, после обнуления таймера....соответственно ни я не пользователи нужной инфы не видят!

Если Вас не затруднит...прокомментируйте пожалуйста, где я сворачиваю не туда!? Спасибо!


 
Дата: Суббота, 18.07.2015, 21:16 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9095
Награды: 23
Репутация: 457
Статус: Unknown


Erya,
Цитата Erya, Сб, 18.07.2015, 21:03:21
В данной части кода, если работает таймер то ждемс... если время закончилось, то делаем перезагрузку страницы:

Нет, сначала проверяем, не пуста ли переменная info и, если пуста, то перезагружаем:
Код
    if(info.length){     
        document.getElementById("clock").innerHTML=info;     
       }else{     
        window.location.reload();     
       }


Если переменная пуста, предполагается, что после перезагрузки сработает условие $TIME$="Нужное время", и проверка выведет текст.. Так же, предполагается, что условие синхронизировано с таймером и рабочее.
---

Цитата Erya, Сб, 18.07.2015, 21:03:21
Т.е. как понимаю я данный пример работы: идет таймер, по истечению времени перезагружается страница с условием <?if($TIME$="$OTHER4$")?> и должно показать нужную инфу на протяжении одной минуты (что в принципе меня очень устраивает), но перезагрузка происходит постоянно, после обнуления таймера....соответственно ни я не пользователи нужной инфы не видят!

Не совсем так.
Вот так: идет таймер, по истечению времени делает проверку переменной info, которая, должна быть не пустой по условию:
Код
<?if($TIME$="заданное время")?>

если же она пустая, то происходит релоад страницы, для того что бы условие сработало.
Если же после перезагрузки снова пустая переменная, значит кривое у вас условие или время установлено разное.

Цитата Erya, Сб, 18.07.2015, 21:03:21
Если Вас не затруднит...прокомментируйте пожалуйста, где я сворачиваю не туда!?

Вот тут:
Код
<?if($TIME$="$OTHER4$")?>

- это условие никогда не сработает.
Надеюсь не нужно объяснять почему?

Если, все же нужно, тогда вам вот сюда: Условные операторы и коды системы юКоз (uCoz) (Справка по условным операторам и кодам системы uCoz), ну или сюда: http://likbezz.ucoz.ru/forum/102


 
Дата: Суббота, 18.07.2015, 21:19 |
Erya
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline


Так в роде разжевали, за что Вам огромное спасибо! Буду пытаться исправить!

 
Дата: Суббота, 18.07.2015, 21:21 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9095
Награды: 23
Репутация: 457
Статус: Unknown


Erya,
Цитата Erya, Сб, 18.07.2015, 21:19:40
Буду пытаться исправить!

Почитайте справку по условиям и проверьте срабатывает ли оно, и уже после того, как работает условие, можно приступать к внедрению его на рабочий сайт.


 
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Как обновить часть страницы по таймеру
Страница 1 из 11
Поиск: