2009-09-11 12 views
40

necesito usar jQuery como el follwoing:usando jQuery para unirse "enfoque" y funciones "desenfoque" para "ventana", no funciona en IE

var focusFlag = 1; 
jQuery(window).bind("focus", function(event) 
{ 
focusFlag = 1; 
}); 

jQuery(window).bind("blur", function(event) 
{ 
focusFlag = 0; 
}); 

¿Alguien sabe por qué esto no lo hace trabajar para IE?

+2

A riesgo de sonar idiota, que han puesto que dentro de un $ (document) .ready bloquear? – karim79

+1

No, no los puse dentro de un bloque $ (document) .ready. Pero encontré otra manera que no usa JQuery: http://www.thefutureoftheweb.com/blog/detect-browser-window-focus –

+4

@Mickey Shine: intente colocarlos dentro de un bloque $ (document) .ready. – karim79

Respuesta

94

sólo para tener la respuesta correcta aquí:

$(function() { 
    $(window).focus(function() { 
     console.log('Focus'); 
    }); 

    $(window).blur(function() { 
     console.log('Blur'); 
    }); 
}); 

Tenga en cuenta que en FF y el IE se activa el evento "Foco" en la carga de documentos ~, mientras que en Chrome sólo incendios si la ventana se había perdido el enfoque antes y ahora lo ha recuperado.

+5

Esto tenía un año de antigüedad O_o – Phil

+39

Todavía está bien tener la respuesta. Este fue el primer enlace que encontré sobre el tema. –

+0

excelente respuesta, gracias por publicar –

4

Solo estoy repitiendo lo que han dicho Shedal y roosteronacid, necesitas que el DOM esté listo antes de que puedas vincular eventos a él, de lo contrario, en algunos navegadores la computadora dirá que no y morirá silenciosamente.

Para hacer esto se utiliza la función jQuery ready() se explica por roosteronacid:

var focusFlag = 1; 

jQuery(document).ready(function(){ 
    jQuery(window).bind("focus",function(event){ 
     focusFlag = 1; 
    }).bind("blur", function(event){ 
     focusFlag = 0; 
    }); 
}); 

lo que hace es la función ready() sólo se disparará y ejecutar el código en su interior cuando el DOM tiene completamente cargado desde el servidor.

Los únicos cambios reales que he hecho es que yo abrazo mis soportes para facilitar la lectura, pero es una preferencia personal.

3
$(window) 

no funciona en todos los navegadores.

Trate

$('body') 
+0

¿Con qué navegadores no funciona? – NaturalBornCamper

Cuestiones relacionadas