Sto cercando di aggiungere la mia gestione degli errori alla funzione setTimeout di JavaScript. Il seguente codice funziona bene in chrome:sovrascrivere una funzione globale in javascript
var oldSetTimeout = window.setTimeout;
window.setTimeout = function setTimeout(func, delay) {
var args = Array.prototype.slice.call(arguments, 0);
args[0] = function timeoutFunction() {
var timeoutArgs = Array.prototype.slice.call(arguments, 0);
try {
func.apply(this,timeoutArgs);
}
catch (exception) {
//Do Error Handling
}
}
return oldSetTimeout.apply(this, args);
}
Ma in IE7 si trasforma in una funzione ricorsiva. Per qualche motivo, oldSetTimeout
viene impostato sulla nuova funzione.
Qualche suggerimento?
lato nota: Sì, ho bisogno di farlo in questo modo. Sto usando una pila di librerie di terze parti che non si occupano bene di setTimeout, quindi non posso semplicemente cambiare le chiamate a setTimeout.
Buon punto. Ho apportato la modifica alla mia risposta; Spero non ti dispiaccia. –
lol, ma ora c'è una risposta che dice lo stesso>: | –