Estoy tratando de agregar mi propio manejo de errores a la función de JavaScript setTimeout. El siguiente código funciona bien en cromo:anulando una función global en 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);
}
Pero en IE7 se convierte en una función recursiva. Por alguna razón, oldSetTimeout
se establece en la nueva función.
¿Alguna sugerencia?
nota al margen: Sí, tengo que hacerlo de esta manera. Estoy usando una pila de librerías de terceros, todas las cuales no manejan bien el setTimeout, así que no puedo simplemente cambiar las llamadas a setTimeout.
Buen punto. Hice el cambio a mi respuesta; Espero que no te moleste. –
lol, pero ahora hay respuestas que dicen lo mismo>: | –