我想將自己的錯誤處理添加到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