2014-03-28 24 views
0

我在我的頁面上有一個對象,大多數時候它應該是不可見的。但是,從9日晚上11點在星期日就可以看到。這是使用在PHP IM代碼:使用jquery在給定的時間和日期實時顯示對象

<?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來完成嗎?我該怎麼做?

謝謝。

回答

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

ADD國外

這樣做的最好方法是在頁面加載時獲取服務器的日期和時間,然後獲取用戶計算機時間和服務器時間之間的差異,並按此金額調整用戶日期和時間。

我們想表明,當時間9-11和星期= 1個

的網頁加載 - 服務器時間爲8(使它容易理解)和一週中的一天是3

檢查服務器時間與本地時間 - 本地是9和日期是4

然後商店調整變量局部(時間-1(8 - 9)和日期 - 1)

然後執行JavaScript的循環每60秒獲取本地時間。

所以後來:

本地時間= 12和本地日期= 2 - >調整至11和1,然後檢查對固定下午9點到下午11點上的週日

然而對於一個初學者,這是有點複雜,所以上面的答案將工作正常,除非你有成千上萬的用戶,並且每分鐘只調用一次腳本(間隔6000等)

+0

這聽起來不錯,但即時通訊擔心使用循環,因爲這可能會導致服務器過載,不是嗎? – Nuker

+0

editted我的答案回答這個,因爲它有點長:-P –

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瞭解網絡工作者是如何運作的。

注意Web工作人員的支持:Internet Explorer 10,Firefox,Chrome,Safari和Opera。

+0

嗨,我只是關心循環。不會導致服務器過載? – Nuker

+0

此代碼不在服務器上運行只能在客戶端上運行 –

+0

問題是如果用戶計算機的日期和時間錯誤,則顯示不正確。你可以通過獲取服務器時間來解決這個問題。但是,如果用戶與服務器處於不同的時區,則會根據服務器的日期和時間顯示,而不是用戶的顯示時間。 –

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

謝謝,我只是有點關心循環。考慮到我有很多用戶同時看到該頁面,是否會導致服務器過載? – Nuker

+0

謝謝。這是一個簡單的客戶端腳本,由用戶的Web瀏覽器執行,並且根本不會導致服務器過載。 – naota

+0

很抱歉,最近的答案。它很好地知道,但即使如此,不會腳本使用戶瀏覽器崩潰後重新加載很多次相同的事情? – Nuker