Cheatah: Event-Handler zentral registrieren u. Funktionen übernehmen

Beitrag lesen

Hi,

Klingt einfach.

jo :-)

Was aber ist mit den vielleicht vorhanden onclick-Events, die die Kunden doch noch in ihre Links einbauen? Die muss ich irgendwie auch auslesen und ausführen.
Das hab ich sogar hingekriegt (getestet für IE und FF):

// globales Array mit den evtl. vorhandenen onclick-Funktionen der Links:

Denke objektorientiert. Die onclick-Eigenschaft eines Links ist die onclick-Eigenschaft eines Links, nicht eine onclick-Eigenschaft der Seite. Warum also sollte sie außerhalb des einen Links existieren?

if(objHandlerElement[i].target == strTarget){
         // Hat dieses Element bereits eine onclick-Funktion?
         // dann schreibe sie in das Array:

Nein, dann rette sie in eine von Dir definierte Eigenschaft des selben Elements.

Also, richtig schief geht's nicht wirklich, die Funktion im Tag wird aufgerufen, aber "this.id" ist undefiniert.

Du hast "this" auf ein anderes Objekt umgelegt, nämlich auf das window.

*haarerauf*

Lass das, das bringt nichts. Glaub mir. Das bisschen Ersparnis an Shampoo lohnt nicht.

Ich bin völlig frustriert, da ich nicht mal ansatzweise erkenne, wo ich was wie drehen muss, damit "this.id" auch wirklich die ID des Links übergibt.

Schau Dir in anderen Systemen wie z.B. prototype.js an, wie derlei Dinge gelöst werden. Dort etwa ist die Methode Function.bind() interessant.

Wieso funktioniert:
this.id = 'gnn'; alert(this.id);
aber das hier nicht:
alertTest('Diese ID: ' + this.id);

Oh, das funktioniert gleichermaßen, wenn Du es richtig schreibst:

<foo onclick="this.id = 'gnn'; alert(this.id);">
kontra
<foo onclick="alertTest('Diese ID: ' + this.id);">

Etwas komplett anderes ist aber

function() { alertTest('Diese ID: ' + this.id); }

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes