Я пытаюсь добавить свою собственную обработку ошибок в функцию JavaScript setTimeout. Следующий код работает отлично в хроме:переопределение глобальной функции в 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);
}
Но в IE7 он превращается в рекурсивную функцию. По какой-то причине oldSetTimeout
получает новую функцию.
Любые предложения?
примечание стороны: Да, мне нужно сделать это таким образом. Я использую кучу сторонних библиотек, все из которых не имеют отношения к setTimeout, поэтому я не могу просто изменить вызовы setTimeout.
Хороший вопрос. Я внес изменения в свой ответ; Надеюсь, ты не против. –
lol, но теперь есть ответы, говорящие то же самое:: | –