JavaScript / jQuery:testing窗口是否有焦点

你如何testing浏览器是否有重点?

我没有在其他浏览器中testing过这个,但似乎在Webkit中工作。 我会让你试试IE。 :O)

试试看: http : //jsfiddle.net/ScKbk/

单击开始间隔后,更改浏览器窗口的焦点以查看结果更改。 再次,只在Webkit中testing。

 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方法。 你可以在这里find详细的描述和例子: hasFocus方法

编辑:添加小提琴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); });​ 

testing

更新:

我会解决它,但IE浏览器不能很好地工作

testing更新