Javascript Setinterval和焦点Jquery
我试图检测浏览器窗口是否处于焦点位置,如果不处于焦点位置,则终止ajax调用。基本上,如果用户空闲一段时间,那么ajax死机将消失,但一旦浏览器进入焦点,它将再次启动。我认为Facebook做到了 以下是我所拥有的:Javascript Setinterval和焦点Jquery,javascript,jquery,settimeout,setinterval,Javascript,Jquery,Settimeout,Setinterval,我试图检测浏览器窗口是否处于焦点位置,如果不处于焦点位置,则终止ajax调用。基本上,如果用户空闲一段时间,那么ajax死机将消失,但一旦浏览器进入焦点,它将再次启动。我认为Facebook做到了 以下是我所拥有的: $(document).ready(function(){ // window.onunload = function(){alert('closing')}; // mainmode(); $('#alertbox').cli
$(document).ready(function(){
// window.onunload = function(){alert('closing')};
// mainmode();
$('#alertbox').click(function(){
$('#alertbox').slideUp("slow");
});
setInterval(function(){
// Check focal point
var window_focus = true;
$(function() {
$(window).focus(function() {
window_focus = true;
console.log('Focus');
});
$(window).blur(function() {
window_focus = false;
console.log('Blur');
});
});
if(window_focus == true){
console.log('in focus');
waitForMsg();
}else{
console.log('out of focus');
}
}, 5000);
});
waitformsg是我的ajax调用。我刚刚设置了5秒的间隔,在我的测试浏览器上,它似乎快疯了。这可能也不是最好的方法
它似乎并没有扼杀我的ajax调用,而是将其相乘。我应该使用xhr.abort()吗
感谢您的帮助。修改代码
$(document).ready(function(){
// window.onunload = function(){alert('closing')};
// mainmode();
$('#alertbox').click(function(){
$('#alertbox').slideUp("slow");
});
// Check focal point
var window_focus = true;
$(window).focus(function() {
window_focus = true;
console.log('Focus');
});
$(window).blur(function() {
window_focus = false;
console.log('Blur');
});
setInterval(function(){
if(window_focus == true){
console.log('in focus');
waitForMsg();
}else{
console.log('out of focus');
}
}, 5000);
});
您可能需要查看requestAnimFrame。这些操作仅在浏览器处于焦点时执行。@JustinThomas似乎更适合动画,而不是逻辑焦点/模糊操作。。如果你认为我可以用这个,你能发布一个答案吗?是的,但是没有什么可以说你不能用它来做你正在做的事情。看起来它会起作用,除了我的ajax kill仍然运行。。那里有一个设置超时。有没有办法阻止任何正在运行的ajax调用?中止?我认为您应该在window.blur之后停止向服务器发送请求。如果您确实想中止请求(以防需要非常大的服务器资源),请使用xhr.abort。我无法中止。。检查我的新问题: