JS如何实现倒计时功能,如何防止刷新。

JavaScript010

JS如何实现倒计时功能,如何防止刷新。,第1张

倒计时可以用js的setTimeout来控制

http://www.tocus.com.cn/?send=article_show&id=34&class=2

可以循环计时,而对于页面刷新,我们可以屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键来达到效果

<script>

//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键

function document.oncontextmenu(){event.returnValue=false}//屏蔽鼠标右键

function window.onhelp(){return false} //屏蔽F1帮助

function document.onkeydown(){

if((window.event.altKey)&&((window.event.keyCode==37)||(window.event.keyCode==39))){

//屏蔽Alt+方向键←

//屏蔽Alt+方向键→

event.returnValue=false

}

if((event.keyCode==8)||(event.keyCode==116)||(event.ctrlKey &&event.keyCode==82)){

//屏蔽退格删除键

//屏蔽F5刷新键

//Ctrl+R

event.keyCode=0

event.returnValue=false

}

if(event.keyCode==122){event.keyCode=0event.returnValue=false}//屏蔽F11

if(event.ctrlKey &&event.keyCode==78)event.returnValue=false //屏蔽Ctrl+n

if(event.shiftKey &&event.keyCode==121)event.returnValue=false //屏蔽shift+F10

if(window.event.srcElement.tagName=="A" &&window.event.shiftKey)

window.event.returnValue=false //屏蔽shift加鼠标左键新开一网页

if((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4

window.showModelessDialog("about:blank","","dialogWidth:1pxdialogheight:1px")

return false

}

}

</script>

var the_s = 188888//定义剩余时间, 必须用时间戳.单位为秒

setInterval(promote,1000)//每秒执行一次下面的函数

function promote() {

var d = Math.floor((the_s / 3600) / 24)

var g = Math.floor((the_s - d * 24 * 3600) / 3600)

var e = Math.floor((the_s - d * 24 * 3600 - g * 3600) / 60)

var f = (the_s - g * 3600) % 60

var html = "还剩<b>" + d + "</b>天<b>" + g + "</b>时<b>" + e + "</b>分<b>" + f + "</b>秒"

document.getElementById("divdown1").innerHTML = html//这个id是你想要显示的div的id

the_s--

}

我这个定时器比你的好, 用我的.  你只要定义了the_s和要显示在哪的id. 就可以用了.

如你要显示剩余4小时, 那么将4小时转化为秒: 4*60*60=14400, 就这样调用:

var the_s = 14400

setInterval(promote,1000)

就ok了. 记得要引用我的函数哟~

如果我答得好请给我一点分

在html5中document新增了一个事件 visibilitychange,这个事件在页面前台或后台切换时被触发,你所说的问题就简单了,它也有个对应的属性visibilityState,用于检测当前页面的状态值为hidden还是visible。

解法是,在hidden时记录当前时间,在visible时用当前时间减去之前记录的时间就为当前倒计时需要减去的时间,这也就不需要和后台沟通了,或者你直接在visible时刷新页面也行,下面是小样,你测试一下

var b=getTime()

function getTime()

{

return Date.now()

}

document.addEventListener('webkitvisibilitychange',function()

{

if(document.webkitVisibilityState=='hidden')

{

b=getTime()

}else

{

document.body.appendChild(document.createTextNode('间隔:'+(getTime()-b)))

}

})

document.addEventListener('mozvisibilitychange',function()

{

if(document.mozVisibilityState=='hidden')

{

b=getTime()

}else

{

document.body.appendChild(document.createTextNode('间隔:'+(getTime()-b)))

}

})