dave: window dekorieren

Beitrag lesen

Hi,

ich möchte dem IE7 etwas Funktionalität schenken, dazu müsste ich das window-Objekt dekorieren.
Konkret möchte ich dem IE7 window.attachEvent("hashchange") beibringen.

Mein Problem ist nun attachEvent entsprechend zu erweitern.

Was genau möchte ich erreichen:
Ich möchte wenn window.attachEvent aufgerufen wird eine eigene Methode ausführen und ggf. den Aufruf dann an die eigentlich window.attachEvent weiterleiten.

window.attachEvent = function(eventName, callback, useCapture){  
  // bei besonderem eventNamen etwas anderes machen  
  if(eventName == "hashchange") {  
    alert("hashchange");  
    return;  
  }  
  
  // bei allen anderen ganze normale Funktionalität  
  window.attachEvent(eventName, callback, useCapture);  
}

Das funktioniert so selbstverständlich nicht, da ich ja die ursprüngliche .attachEvent nirgends mehr habe.
Diese würde ich nun gerne irgendwo speichern so dass ich dann etwas in der Art machen könnte:

(function(){  
  // hier wird eine Referenz auf window.attachEvent gespeichert, eigentlich bräuchte ich eine Kopie  
  var oldAttachEvent = window.attachEvent;  
  window.attachEvent = function(eventName, callback, useCapture){  
    if(eventName == "bar") {  
      alert("bar");  
      return;  
    }  
    // hier sollte dann die ursprüngliche Funktion aufgerufen wird, da oben Copy by Ref erfolgte wird hier ein rekursiver Aufruf gestartet...  
    oldAttachEvent(eventName, callback, useCapture);  
  }  
})();

Das funktioniert so selbstverständlich auch nicht, weil bei Funktionen nur die Referenz zugewiesen wird.
Wie also könnte ich die Funktion kopieren?

Oder wie kann ich die .attachEvent des window-Objekts ändern, ohne die normale Funktionalität komplett zu verlieren?

Ist verständlich was ich versuche zu erreichen?

~dave