2012-05-21 3 views
2

Я понимаю, что вы можете легко проверить для фокусировки, используя что-то вроде этого:В Javascript, как вы можете обнаружить, когда отображается окно браузера?

var hasFocus = true; 
$(window).blur(function(){ 
    hasFocus = false; 
}); 
$(window).focus(function(){ 
    hasFocus = true; 
}); 

Однако это все равно будет равно ложным, когда пользователь, например, имеет окно браузера с открытым на втором экране во время работы на первый экран в другом приложении.

Это приложение в реальном времени, которое сообщает данные в реальном времени, и я не хочу, чтобы он длительный опрос, когда пользователь имеет приложение на вкладке или сведено к минимуму, но я хочу запустить опрос, когда окно отображается (даже если оно не фокусируется).

Есть ли способ проверить, открывается ли окно? (который работает в более старых браузерах?)

+0

afaik, некоторые браузеры естественным образом замедляют или останавливают таймеры, когда окно/вкладка не находится в фокусе. – Joseph

+0

http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active – goat

+0

Не совсем то, что я ищу, как Я не просто хочу, чтобы «фокус» я хотел, когда он действительно находится в поле зрения. –

ответ

1
var hasFocus = true; 
$(window) 
.focus(function(eventObject){ 
    eventObject.stopPropagation(); 
    hasFocus = true; 
}) 
.blur(function(eventObject){ 
    eventObject.stopPropagation(); 
    hasFocus = false; 
}); 
+0

Как это даст другой результат на примере, который я дал? : s –

Смежные вопросы