Как вы проверяете, сосредоточен ли браузер?
JavaScript/jQuery: проверка, если окно имеет фокус
Ответ 1
Я не тестировал это в других браузерах, но, похоже, работает в Webkit. Я дам вам попробовать IE.: О)
Попробуйте: http://jsfiddle.net/ScKbk/
После того, как вы нажмете, чтобы начать интервал, измените фокус окна браузера, чтобы увидеть изменение результата. Опять же, тестируется только в Webkit.
var window_focus;
$(window).focus(function() {
window_focus = true;
}).blur(function() {
window_focus = false;
});
$(document).one('click', function() {
setInterval(function() {
$('body').append('has focus? ' + window_focus + '<br>');
}, 1000);
});
Ответ 2
используйте метод hasFocus документа. Вы можете найти подробное описание и пример здесь: метод hasFocus
EDIT: Добавлена скрипка http://jsfiddle.net/Msjyv/3/
HTML
Currently <b id="status">without</b> focus...
JS
function check()
{
if(document.hasFocus() == lastFocusStatus) return;
lastFocusStatus = !lastFocusStatus;
statusEl.innerText = lastFocusStatus ? 'with' : 'without';
}
window.statusEl = document.getElementById('status');
window.lastFocusStatus = document.hasFocus();
check();
setInterval(check, 200);
Ответ 3
HTML:
<button id="clear">clear log</button>
<div id="event"></div>
JavaScript:
$(function(){
$hasFocus = false;
$('#clear').bind('click', function() { $('#event').empty(); });
$(window)
.bind('focus', function(ev){
$hasFocus = true;
$('#event').append('<div>'+(new Date()).getTime()+' focus</div>');
})
.bind('blur', function(ev){
$hasFocus = false;
$('#event').append('<div>'+(new Date()).getTime()+' blur</div>');
})
.trigger('focus');
setInterval(function() {
$('#event').append('<div>'+(new Date()).getTime()+' has focus '+($hasFocus ? 'yes' : 'no')+'</div>');
}, 1000);
});
UPDATE:
Я исправлю это, но IE работает не очень хорошо