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更新