Я пытаюсь определить, находится ли окно браузера в фокусе и убить вызовы ajax, если это не так. В принципе, если пользователь простаивает в течение определенного времени, тогда убийства ajax умрут, но начнутся снова, как только браузер начнет фокусироваться. Я думаю, что Facebook это делает.Setinterval и Focus JQuery
Вот что у меня есть:
$(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 мой Аякса вызов. Я просто установил 5-секундный интервал, и, похоже, он сходит с ума в моем тестовом браузере. Вероятно, это тоже не лучший способ сделать это.
Это также, кажется, не убивает мой вызов ajax, а вместо этого умножает его. Должен ли я использовать xhr.abort()?
Спасибо за помощь.
Возможно, вы захотите посмотреть запросAnimFrame. Они выполняются только в том случае, если браузер находится в фокусе. –
@ JustinThomas кажется больше для анимации, чем операции с логическим фокусом/размытием. Если вы думаете, что я могу использовать это, вы можете отправить ответ? – greycode
Это так, но нечего сказать, что вы не могли использовать его для своего дела. –