Próbuję dodać własną obsługę błędów do funkcji JavaScript setTimeout. Poniższy kod działa poprawnie w chrome:nadpisywanie funkcji globalnej w 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);
}
Ale w IE7 zmienia się w funkcję rekursywną. Z jakiegoś powodu oldSetTimeout
zostaje ustawiona na nową funkcję.
Wszelkie sugestie?
dygresja: Tak, muszę zrobić to w ten sposób. Używam stosu bibliotek innych firm, z których wszystkie nie radzą sobie dobrze z setTimeout, więc nie mogę po prostu zmienić wywołań na setTimeout.
dobry punkt. Dokonałem zmiany w mojej odpowiedzi; Mam nadzieję, że nie masz nic przeciwko. –
lol, ale teraz jest do odpowiedzi mówiąc to samo>: | –