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

0

У меня есть объект на моей странице, который должен быть невидимым большую часть времени. Тем не менее, он становится видимым в воскресенье с 9 до 11 вечера. Это код в PHP im, использующий:

<?php
 $day=date('w'); 
 $hour=date('Gi'); 
 if($day=="0" && $hour>2100 && $hour<2359) { $playoff=1; } else $playoff=0;
?>

<object style="<?php if ($playoff==0) { echo "display:none"; ?>" ></object>

Однако, если пользователи находятся на странице до этого времени и не перезагружают ее, они не смогут увидеть объект. Вот почему мне нужно что-то, что запускает его, как только придет время, не перезагружая страницу. Должно ли это быть сделано с jquery? Как мне это сделать?

Спасибо.

Теги:

3 ответа

2

С помощью HTMl5 вы можете использовать Javascript Web Workers.

Вот пример:

$(function() {

var worker = new Worker('scripts/task.js'); //External script
worker.onmessage = function(event) {    //Method called by external script

    if(event.data.show) {
        $("#message").show();
    } else {
        $("#message").hide();
    }       
};

});

И вы файл task.js:

setInterval(function() {
    var now = new Date();

    if(now.getDay() == 0 && (now.getHours() >= 21 && now.getHours() <= 23)) {
        postMessage({show: true});
    } else {
        postMessage({show: false});
    }   

},60000); //repeat after 1 minutes

См. Эту статью http://www.w3schools.com/html/html5_webworkers.asp, чтобы понять, как работают веб-сотрудники.

Примечание. Работники веб-сайта поддерживаются: Internet Explorer 10, Firefox, Chrome, Safari и Opera.

  • 0
    привет, я просто обеспокоен петлей. Разве это не вызывает перегрузку на сервере?
  • 0
    этот код не идет на сервер, работает только на клиенте
Показать ещё 1 комментарий
0

Я предполагаю, что вы хотели бы сделать что-то вроде этого. Вы можете проверить дату без PHP.

HTML:

 <object id="show_me" ></object>

JavaScript:

function myTimer(){
    var d = new Date();
    if((d.getDay() == 0) && (21 < d.getHours() ) && (d.getHours() < 24)){
        $("#show_me").show();
    }else{
        $("#show_me").hide();
    }     
}

setInterval(function(){myTimer();},10000); // check every 10 seconds

Надеюсь это поможет:

  • 0
    Спасибо, я просто немного обеспокоен петлей. Может ли это вызвать перегрузку сервера, учитывая, что у меня много пользователей, которые одновременно видят страницу?
  • 0
    Спасибо. Это простой клиентский сценарий, который выполняется веб-браузером пользователя и вообще не вызывает перегрузки сервера.
Показать ещё 1 комментарий
0
<?php
   $day=date('w'); 
   $hour=date('Gi'); 
   if($day=="0" && $hour>2100 && $hour<2359) { $playoff=1; } else $playoff=0;

   echo $playoff;

?>

HTML

<object id="hideOrShowMe"></object>

Jquery

$.get("scriptAbovePageName.php", function( data ) {
  if(data == 1){
    $('#hideOrShowMe').css("display", "block");
}else{
    $('#hideOrShowMe').css("display", "none");
});

Единственное, что нужно сделать, это поставить его в цикл (вызовите $.get каждую минуту или секунду и т.д.), Но я не пишу для вас весь ваш код: -D

ДОПОЛНИТЕЛЬНЫЙ

Лучший способ сделать это - получить сервер даты и время, когда страница загружается, а затем получить разницу между временем компьютера и временем сервера и настроить дату и время пользователей на эту сумму.

МЫ ХОТИМ ПОКАЗАТЬ КОГДА время 9 -1 1 и день недели = 1

Загрузка страницы - время сервера - 8 (чтобы было легко понять), а день недели - 3

Проверить время сервера по местному времени - локальный - 9, а дата - 4

затем сохраните переменную настройки локально (время -1 (8 - 9) и дата - 1)

Затем цикл javascript каждые 60 секунд получает местное время.

Так позже:

местное время = 12 и местная дата = 2 → настроить на 11 и 1, а затем проверить на фиксированные 9 вечера до 11 вечера в воскресенье

Однако для новичков это немного сложнее, поэтому ответ выше будет работать нормально, если у вас нет тысяч пользователей, и вызывать только скрипт каждую минуту или около того (интервал 6000 и т.д.),

  • 0
    Это звучит хорошо, но я обеспокоен использованием циклов, потому что это может вызвать перегрузку сервера, не так ли?
  • 0
    отредактировал мой ответ, чтобы ответить на него, так как он немного длинный :-P

Ещё вопросы

Сообщество Overcoder
Наверх
Меню