JS 倒计时问题,手机网页后台运行时,js会暂停

JS倒计时问题,手机网页后台运行时,js会暂停。ajax从后端获取一个时间,然后setTimeOut()执行,时间为0的时候会再次发出请求。但是如果用户返回主界面的时候j... JS 倒计时问题,手机网页后台运行时,js会暂停。ajax从后端获取一个时间,然后setTimeOut() 执行,时间为0的时候会再次发出请求。 但是 如果 用户返回主界面的时候 js会暂停运行,这样倒计时就不准了。 想通过用户返回界面的时候 发出请求,但是不知道应该注册什么事件, 或者有其他替代方案,
在PC上没有问题 ,问题主要出在 手机用户 的浏览器 在后台运行 的时候 页面的js会暂停, 当用户再次调出 浏览器的时候 js继续执行,但是 时间就不对了。想要在用户重新调出浏览器的时候去获取最新的时间。 不用知道js上有没有 类似安卓 onResume和onPause 。或者其他解决方法
展开
 我来答
摩惠然0iD
推荐于2017-09-19 · TA获得超过1634个赞
知道小有建树答主
回答量:1162
采纳率:100%
帮助的人:834万
展开全部

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

在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)))

}



})
tom95588
2014-02-26 · TA获得超过163个赞
知道答主
回答量:67
采纳率:0%
帮助的人:68.3万
展开全部
从后台页面那里穿一个参数过来,可以通过URL 当然你有其他办法也行, 然后在首页的window.onload函数读取地址栏的参数window.loaction.href.search='传的值' !=-! 这样就知道用户是从后台来的了 至于你那个后台的setTimeOut 如果已经离开后台那个页面了 后台页面的JS自然就消失了,估计你是想要他不消失这个功能吧? 可以用这个办法检测。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨之快乐dca51ae
2014-02-26 · TA获得超过327个赞
知道小有建树答主
回答量:308
采纳率:33%
帮助的人:119万
展开全部
获取系统最新时间?、
js里用new Date();不行吗?
参考:
http://hi.baidu.com/wjx_5893/item/bc53ecf3aca75a0a85d2783d

setTimeOut是定时函数
理论就执行一次
可以用setInterval 这个是循环执行函数
更多追问追答
追问
不是获取 系统时间,而是获取 服务器时间 ,不是setInterval 的问题,问题是如何在 浏览器 从后台调出来的时候如何去后端请求数据。
追答
用ajax获取后台数据
$.ajax({
//传输方式
type: "POST",
dataType: "json",
//触发地址
url: "/Handler/Handle.ashx",
cache: false,
//传递参数
data: { action: "GetDate" },
//错误
complete: function () {

},
error: function (msg) {
},
//成功
success: function (data, status) {
}
});
网上搜索下就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式