【发布时间】:2010-09-28 17:12:31
【问题描述】:
我正在尝试将我自己的错误处理添加到 JavaScript setTimeout 函数。以下代码在 chrome 中运行良好:
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 被设置为新功能。
有什么建议吗?
旁注:是的,我需要这样做。我正在使用一堆 3rd 方库,所有这些库都不能很好地处理 setTimeout,所以我不能只更改对 setTimeout 的调用。
【问题讨论】:
标签: javascript overriding global settimeout