¿Cómo se prueba si el navegador tiene foco?JavaScript/jQuery: prueba si la ventana tiene foco
Respuesta
No he probado esto en otros navegadores, pero parece funcionar en Webkit. Te dejaré probar IE. : O)
pruébelo:http://jsfiddle.net/ScKbk/
Después de hacer clic para iniciar el intervalo, cambiar el foco de la ventana del navegador para ver el cambio resultado. Una vez más, probado solo en 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 - ¿Debe ser IE? En Webkit y Firefox, cualquier activación de la ventana desencadena el foco. Me pregunto si hay una solución para IE. Además, ¿has probado en tu página? ¿Tal vez hay un problema porque el jsFiddle usa marcos? – user113716
Además, presionar la tecla de tabulación parece romperla de forma permanente. – jball
Chrome en realidad. Después de más pruebas, mi primer comentario podría ser incorrecto: la tecla de tabulación que lo rompe parece ser más consistente. – jball
utilice el método hasFocus del documento. puede encontrar la descripción detallada y un ejemplo aquí: hasFocus method
EDIT: Agregado violín 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);
Probé el ejemplo del enlace de arriba y funcionó bien en IE7 +, Chrome y FF4. +1 para ti. –
Gran pequeña función, funciona mucho mejor que otros jQuery equivalentes que he encontrado. – Heath
Más útil que la respuesta aceptada, tuve problemas con la carga del temporizador mientras la ventana estaba desenfocada. – Kokos
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);
});
ACTUALIZACIÓN:
lo arreglaré, pero IE no funciona muy bien
No funciona sistemáticamente en IE8 en mis pruebas. –
Parece que el desenfoque no se dispara cuando se cambian las pestañas. :( –
- 1. ¿Cómo puedo saber si una ventana tiene foco? (API Win32)
- 2. Determine quién tiene foco en WPF Ventana
- 3. ¿Cómo determinar si un campo tiene foco?
- 4. Prueba si Django ModelForm tiene la instancia
- 5. Compruebe si la ventana está perdiendo el foco
- 6. ¿Cómo puedo verificar si mi aplicación tiene foco?
- 7. ¿Cómo saber qué ventana tiene foco y cómo cambiarla?
- 8. Determine si la aplicación actual está activada (tiene foco)
- 9. Selenium IDE: ¿Cómo verificar si un elemento tiene un foco?
- 10. Determinar si la página web tiene foco de ventana en primer plano/está en la pestaña activa?
- 11. ¿Prueba si una clase tiene un atributo?
- 12. Comprobación para ver si un elemento DOM tiene foco
- 13. cómo saber si un UITextView tiene un foco o no
- 14. ¿Cómo verifica si un widget tiene foco en Tkinter?
- 15. Prueba de capibara si la página tiene una expresión regular
- 16. Detectando si la ventana es una ventana clave en cocoa
- 17. Como encontrar de forma fiable la ventana en primer plano cuando no tiene el foco
- 18. Descubriendo qué control tiene foco
- 19. Prevenir Cambio de foco de ventana
- 20. C#: Detectando qué aplicación tiene foco
- 21. Cómo mover la ventana de la ventana de texto al obtener el foco?
- 22. ¿Cómo puedo controlar qué ventana tiene actualmente foco en el teclado?
- 23. Ejecutar la función cuando se presiona enter si el cuadro de texto tiene foco
- 24. Prueba si un div no tiene un elemento
- 25. Python 3.x: prueba si el generador tiene elementos restantes
- 26. Prueba si el elemento ya tiene jQuery datepicker
- 27. ¿Scala tiene un operador de "prueba si coinciden"?
- 28. ¿Cómo establecer el foco en otra ventana?
- 29. Preguntar Emacs para resaltar más claramente qué ventana (panel) tiene el foco (cursor)
- 30. ¿Cómo determinar qué control en la forma tiene foco?
Vea también http://stackoverflow.com/questions/483741/how-to-determine-which-html-page-element-has-focus que también puede responder a esta pregunta. –
Pruebe 'document.hasFocus()', que devuelve un valor booleano. Está integrado en la especificación, por lo que se puede hacer sin jQuery. –