我有一个为用户构建的Web管理页面,此页面包含每4秒调用一次以显示实时信息的Ajax,我的问题是我的某些用户在不同的选项卡上多次打开了此页面,而没有注意到它,这是导致对我的php服务的请求过多,有没有一种方法可以设置它,因此一旦页面重新打开,它将停止旧页面发送请求?
谢谢,拉米
在现代浏览器中,从IE10起,您可以使用Visibility API来确定该选项卡是否处于活动状态,并且仅在活动的选项卡中保持轮询状态,如下所示
var hidden, visibilityChange, timer;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
hidden = "mozHidden";
visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange() {
if (document[hidden]) {
stopAjax();
} else {
startAjax();
}
}
document.addEventListener(visibilityChange, handleVisibilityChange, false);
function startAjax() {
timer = setInterval(function() {
$.ajax(options);
}, 4000);
}
function stopAjax() {
clearInterval(timer);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句