Überschreiben einer globalen Funktion in Javascript

Ich versuche, der JavaScript-Funktion setTimeout meine eigene Fehlerbehandlung hinzuzufügen. Der folgende Code funktioniert in Chrome einwandfrei:

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);
}

Aber in IE7 verwandelt es sich in eine rekursive Funktion. Aus irgendeinem GrundoldSetTimeout wird auf die neue Funktion gesetzt.

Irgendwelche Vorschläge


Randnotiz: Ja, ich muss es so machen. Ich verwende einen Stapel von Bibliotheken von Drittanbietern, die sich alle nicht gut mit setTimeout auskennen. Daher kann ich die Aufrufe nicht einfach auf setTimeout ändern.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage