我的页面上有一个对象,它在大多数情况下都是不可见的。然而,它在周日晚上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完成吗?我该怎么做?
谢谢。
使用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支持Web工作程序。
我想你想做的是这样的事情。您可以在没有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
希望这有帮助:
<?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-11和星期几=1
页面加载-服务器时间为8(便于理解(,一周中的某一天为3
检查服务器时间与本地时间-本地时间为9,日期为4
然后本地存储调整变量(时间-1(8-9(和日期-1(
然后获取本地时间,每隔60秒执行一次javascript循环。
所以稍后:
本地时间=12,本地日期=2->调整为11和1,然后对照周日的固定晚上9点到11点进行检查
然而,对于初学者来说,这有点复杂,所以上面的答案会很好,除非你有数千个用户,并且每分钟左右(间隔6000等(只调用一次脚本