2010-08-13 10 views
24

C'è un modo in cui quando faccio clic sul mio browser e lo concedo a focus, per eseguire un metodo una volta? E poi quando il browser perde lo stato attivo e quindi torna a concentrarsi di nuovo su quel metodo solo una volta, di nuovo.evento browser per window.focus()

Grazie,

asta.

risposta

39

È possibile allegare focus e blur gestori di eventi sull'oggetto window per monitorare se la finestra ottiene o perde l'attivazione (vedi http://jsfiddle.net/whQFz/ per un esempio banale). window si applica al contesto corrente del browser (quindi potrebbe essere una finestra, una scheda, una cornice, ecc.).

Nota: L'evento sarà focus fuoco ogni volta che la finestra si concentrerà e l'evento sarà blur fuoco ogni volta che non è più attivo. Un esempio di qualcosa che si focalizza lontano dalla finestra è una finestra alert. Se provi ad avvisare in un gestore di eventi onfocus riceverai un ciclo infinito di avvisi!

// Set global counter variable to verify event instances 
var nCounter = 0; 

// Set up event handler to produce text for the window focus event 
window.addEventListener("focus", function(event) 
{ 
    document.getElementById('message').innerHTML = "window has focus " + nIndex; 
    nCounter = nCounter + 1; 
}, false); 

// Example of the blur event as opposed to focus 
// window.addEventListener("blur", function(event) { 
// document.getElementById('message').innerHTML = "window lost focus"; }, 
// false); 
+5

come è con la compatibilità del browser? –

12
$(document).ready(function() { $(window).one("focus", SomeFocusMethod); }); 

var SomeFocusMethod = function() 
{ 
    // do stuff 
    $(window).one("blur", SomeBlurMethod); 
} 

var SomeBlurMethod = function() 
{ 
    // do stuff 
    $(window).one("focus", SomeFocusMethod); 
} 
+2

Si prega di includere un commento per il downvote in quanto questo appare, almeno per me, un'aggiunta accettabile a questa domanda. –

+0

Non è una risposta accettabile, poiché non esiste un metodo .one(), esiste solo un metodo .on(), ho corretto la risposta. –

+11

C'è un metodo 'one' in jQuery ed è molto utile: https://api.jquery.com/one/ – Lindsay

Problemi correlati