Frank: Benutzung von AddEventhandler-Workarounds

Hallo!

Ich habe im Internet ein paar schöne AddEventhandler-Workarounds gefunden um eine maximale Browserkompatibilität herzustellen. Dazu habe ich zwei Fragen:
1. Welches Workaround benutzt ihr denn, bzw. könnt ihr empfehlen?
2. Alle arbeiten nach einem ähnlichen Schema:
addEvent(element, type, handler)
Dabei können dem handler keine Parameter mitgegeben werden, ich müsste aber auch mal ein paar Objekte mitschicken. Habt ihr eine Idee?

Gruß
Frank

  1. Hi,

    Dabei können dem handler keine Parameter mitgegeben werden, ich müsste aber auch mal ein paar Objekte mitschicken. Habt ihr eine Idee?

    Dort eine "Starter-Funktion" aufrufen, die die eigentliche Funktion mit Parametern aufruft.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Prima, vielen Dank euch beiden!

  2. Hallo,

    Ich habe im Internet ein paar schöne AddEventhandler-Workarounds gefunden um eine maximale Browserkompatibilität herzustellen. Dazu habe ich zwei Fragen:

    1. Welches Workaround benutzt ihr denn, bzw. könnt ihr empfehlen?

    http://dean.edwards.name/my/events.js

    Prototype hat so etwas auch eingebaut, aber Frameworks, inbesondere das unübersichtliche und nicht dokumentierte Prototype finde ich i.d.R. unangemessen.

    1. Alle arbeiten nach einem ähnlichen Schema:
      addEvent(element, type, handler)
      Dabei können dem handler keine Parameter mitgegeben werden

    Ja, der Handler bekommt nur das Event-Objekt als Parameter.

    ich müsste aber auch mal ein paar Objekte mitschicken. Habt ihr eine Idee?

    Kommt darauf an, welche Parameter.

    1. Du kannst Referenzen auf die Objekte am Elementobjekt speichern, dem du gerade einen Handler verpasst. Im Handler dann über this darauf zugreifen.

    function func (e) {  
       alert(this.eigenschaft);  
    }
    

    (In einem anderen Scope:)

    element.eigenschaft = objekt;  
    addEvent(element, "click", func);
    

    2. Eine Closure, die den Scope der Handler-Funktion mit dem Scope verbindet, in dem addEvent() aufgerufen wird.

    var objekt = new Object();  
    addEvent(element, "click", function (e) {  
       alert(objekt); // Hier sind alle lokalen Variablen des Scopes verfügbar, in dem die Funktion notiert wurde  
    });
    

    Das kann man auch so schreiben:

    var objekt = new Object();  
    var func = function (e) {  
       alert(objekt);  
    };  
    addEvent(element, "click", func);
    

    Mathias