2009-09-11 10 views
40

ho bisogno di usare JQuery come il follwoing:utilizzando jQuery per legare "focus" e funzioni di "sfocatura" per "finestra", non funziona in IE

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

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

Qualcuno sa perché questo non lo fa lavoro per IE?

+2

A rischio di sembrare stupido, avete messo che all'interno di un $ (document) .ready bloccare? – karim79

+1

No, non li ho inseriti in un blocco $ (documento) .ready. Ma ho trovato un altro modo che non usa il modo JQuery: http://www.thefutureoftheweb.com/blog/detect-browser-window-focus –

+4

@Mickey Shine - prova a metterli in un blocco $ (documento) .ready. – karim79

risposta

94

solo per avere la risposta giusta qui:

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

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

Si noti che in FF e IE viene generato l'evento "Focus" sul carico documento ~, mentre in Chrome solo incendi se la finestra aveva perso messa a fuoco prima e ora lo ha riacquistato.

+5

Questo era un anno O_o – Phil

+39

Ancora buono per avere la risposta. Questo è stato il primo link che ho trovato sull'argomento. –

+0

ottima risposta, grazie per aver postato –

4

Sto solo ripetendo ciò che Shedal e roosteronacid hanno detto, hai bisogno che il DOM sia pronto prima che tu possa associare eventi ad esso altrimenti in alcuni browser il computer dirà di no e morirà silenziosamente.

Per fare questo si utilizza la funzione jQuery .ready() spiegata da roosteronacid:

var focusFlag = 1; 

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

ciò che fa è la funzione .ready() sarà solo il fuoco ed eseguire il codice al suo interno quando il DOM ha completamente caricato dal server.

Le uniche modifiche reali apportate sono che I hug le parentesi per una facile lettura ma è una preferenza personale.