我想将自己的错误处理添加到JavaScript setTimeout函数中。下面的代码可以在Chrome中正常工作:在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。
好一点。我改变了我的答案;我希望你不介意。 – 2013-12-11 12:21:18
大声笑,但现在有答案说相同>:| – 2015-02-15 08:25:45