Ho adottato anch'io questo trucco del timeout, ma più vado avanti nel lavoro di conversione dell'applicazione da IE-only a Firefox-compatibile, più questo trucco mostra i suoi limiti.
Già ho dovuto sostituire tutti i punti in cui nell'attributo onblur si faceva riferimento a "this", adesso ho un problema molto più complicato.

Infatti ho un caso in cui assieme all'onblur di un input di testo, viene a scatenarsi anche l'onclick di un bottone (ma potrebbe essere anche l'onfocus di un altro input o il submit di un form). Normalmente, questo secondo evento avverebbe solo dopo l'onblur, invece in questo caso, posticipando il codice con il setTimeout, viene prima eseguito il codice relativo al click sul bottone, e nel mentre scatta il codice schedulato con il timeout, accavallando le due chiamate. Ho realizzato un meccanismo per far sì che ogni chiamata ad evento (onfocus, onclick, onchange) richiami prima una procedura che verifichi se c'è un codice legato ad un onblur da eseguire prima.
Ma a questo punto, le procedure di convalida che "bloccavano" l'utente tramite un "return false;" non sono più efficaci, perché tanto vengono eseguite all'interno del codice dell'onclick.

Come fare? Esiste una strada migliore per gestire questo problema dei focus, senza usare questi tremendi setTimeout? Oppure per "bloccare" l'utente se il valore inserito nell'input non è valido?

Spero che per una volta il forum mi risponda, è da un po' che i miei quesiti rimangono irrisolti.