3 ответов:
Я не тестировал это в других браузерах, но, похоже, он работает в Webkit. Я позволю вам попробовать IE. : o)
попробуйте: 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); });
используйте метод 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);
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); });обновление:
Я исправлю это, но IE не очень хорошо работает
Comments