如何测试浏览器是否有焦点?JavaScript/jQuery:测试窗口是否有焦点
回答
我没有在其他浏览器中测试过,但它似乎在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);
});
@jball - 必须是IE?在Webkit和Firefox中,窗口的任何激活都会触发焦点。我想知道是否有一个IE的解决方法。另外,你在你的网页上测试过吗?也许有问题,因为jsFiddle使用框架? – user113716 2010-08-13 19:39:32
此外,按Tab键似乎永久打破它。实际上Chrome实际上是 – jball 2010-08-13 19:39:44
。经过进一步测试,我的第一个评论可能是错误的 - 突破它的标签键似乎更一致。 – jball 2010-08-13 19:40:59
使用文件的hasFocus方法。 你可以找到详细的说明和这里的例子: hasFocus method
编辑:新增小提琴 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);
});
UPDATE:
我会解决它,但IE浏览器不能很好地工作
在我的测试中不一致地在IE8中工作。 – 2010-08-27 15:22:57
切换标签时,显然模糊不会触发。 :( – 2013-11-12 20:41:58
- 1. 检查ZK窗口是否有焦点
- 2. 检查窗口是否失去焦点
- 3. 检测是否没有EditTexts有焦点
- 4. 如何检查窗口是否有焦点?
- 5. 是否有任何文档窗口焦点事件?
- 6. 如何判断一个窗口是否有焦点? (Win32 API)
- 7. 是否有可能在后台移动窗口(不偷焦点)
- 8. 检查窗口是否有焦点与AutoIt
- 9. WPF窗口焦点
- 10. Python窗口焦点
- 11. PyQt窗口焦点
- 12. javafx焦点窗口
- 13. emacsclient窗口焦点
- 14. 检测输入是否有焦点
- 15. wmctrl打开的窗口没有焦点
- 16. Javascript-文档/窗口有焦点?
- 17. 打开时强制窗口有焦点
- 18. window.setTimeout行为时,窗口没有焦点
- 19. 如何检测焦点窗口是否为编辑“类型”控件?
- 20. Javascript弹出窗口焦点
- 21. C#获得焦点窗口?
- 22. PyQt4:停止窗口焦点
- 23. Vista窗口焦点问题
- 24. Java获取焦点窗口
- 25. Tkinter的主窗口焦点
- 26. tkinter给窗口焦点
- 27. WPF窗口集焦点
- 28. 窗口失去焦点
- 29. 调整MatLab窗口焦点
- 30. LibGDX:有没有办法检查窗口是否在焦点? *解决*
另请参阅http://stackoverflow.com/questions/483741/how-to-determine-which-html-page-element-has-focus它也可以回答这个问题。 – 2011-06-29 15:12:23
尝试'document.hasFocus()',它返回一个布尔值。 它被构建到规范中,所以它可以在没有jQuery的情况下完成。 – 2013-02-04 21:41:42