2011-11-10 10 views
21

Voglio registrare gli errori JavaScript, quindi sono imperativi window.onerror come questo:Se eseguo l'override di window.onerror in javascript, dovrei restituire true o false?

window.onerror = function(message, file, lineNumber) { 
    var browser_ = encodeURI(navigator.appVersion); 
    var error_ = encodeURI("msg:"+ message + "\n\tfile:"+file+"\n\tln:"+lineNumber); 
    var user_ = encodeURI(""); 

    ... 

    return false; 
} 

Ho visto alcune persone tornano true e qualche ritorno false. Qual è il giusto e perché? Un post ha menzionato qualcosa in merito alla necessità di restituire true o Firefox gestirà l'errore a modo suo. Che cosa??

risposta

25

Da MDN su window.onerror:

Quando la funzione ritorna true, questo impedisce la cottura del gestore di eventi di default.

Vedi anche il cromo Issue 92062:

In Chrome, di ritorno dal true window.onerror permette l'errore di propagare, e tornando false sopprime.

Questo è l'opposto del comportamento in Firefox e IE, dove restituire 'true' sopprime l'errore, ma restituire false lo diffonde.

Nota: la questione di cui sopra è stato risolto, il comportamento è ora come indicato sul MDN per tutti i browser.

+0

Il comportamento di Chrome sul suo volto sembra essere il modo in cui mi aspetterei che funzioni ... "errore? Falso!" –

+2

@Tomasz Non hai risposto che dovrei fare! Inoltre, qual è un esempio di dove vuoi propagare l'errore? Immagino sia una nuova domanda! – tooshel

+0

Opera 11.60 si comporta come Chrome. – c69

Problemi correlati