Benutzung von AddEventhandler-Workarounds
Frank
- javascript
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
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
Prima, vielen Dank euch beiden!
Hallo,
Ich habe im Internet ein paar schöne AddEventhandler-Workarounds gefunden um eine maximale Browserkompatibilität herzustellen. Dazu habe ich zwei Fragen:
- 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.
- 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