Path: csiph.com!news.mixmin.net!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: de.comp.lang.javascript Subject: Re: addEventListener funktioniert nicht wie gedacht Date: Sat, 26 Sep 2015 13:52:08 +0200 Organization: PointedEars Software (PES) Lines: 51 Message-ID: <2967652.pP7tlEX89l@PointedEars.de> References: Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1443268330 16803 eJwFwYEBACAEBMCVyD8ZR8r+I3RHc/UOOB0czl3pTJlnLyTYhyG24ggQtad16ppu6EWWYz4NjBCn (26 Sep 2015 11:52:10 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Sat, 26 Sep 2015 11:52:10 +0000 (UTC) User-Agent: KNode/4.14.2 X-User-ID: eJwNyMkBwCAMA7CVcHNAxgkY7z8C1VNhiTzTM9JDoYLd7Nm3yTDi7rLa/IcmntI4lC9iAaM/LZRA8z2yfDIehIEWUw== Cancel-Lock: sha1:LFL4iknSvOUAg+bHYVX7kJld3cg= X-NNTP-Posting-Host: eJwFwYEBwDAEBMCV8sSrcQj2H6F3pgSfXxqvre3RUkyyKlpgwaTQQ/DNOLqWp3MRaJl3Un8WaBEi Xref: csiph.com de.comp.lang.javascript:4724 Stefan Reuther wrote: > Dem geübten Blick fällt auf, dass der Unterschied ist, dass bei den > funktionierenden Events ein Funktionsname steht, bei den nicht > funktionierenden ein Funktionsaufruf. Es muss immer etwas aufrufbares > stehen, also ein Funktionsname oder eine Closure. Korrekt ist „ein Funktionsausdruck“ (“function expression”); nicht „eine Closure“. | The term /closure/ is often mistakenly used to mean anonymous function | (). Vgl. [falsch] : | Eine Closure (oder Funktionsabschluss) ist ein Begriff aus der | Programmierung. Er beschreibt eine anonyme Funktion, die Zugriffe auf | ihren Erstellungskontext enthält. | [sic] > […] Außerdem sieht der Event-Listener das Objekt, an dem er hängt, als > 'this', folglich musst du den nicht ausdrücklich durchreichen. Das ist jedoch (leider) bisher nur ein Quasi-Standard, also formal nur für Event-Listener sicher, die über abwärtskompatible Event-Handler und Event- Handler-Attribute hinzugefügt wurden. Standardkonform muss auf die currentTarget-Eigenschaft des Event-Objekts zugegriffen werden. Ein Wrapper wird daher einen Algorithmus verwenden, der funktional identisch zu folgendem Ausdruck ist, wobei e die Referenz zum Event-Objekt sei: (e ? e.currentTarget || e.target : this) || window.event.srcElement > Und schlussendlich sei noch an die CSS-Pseudoklasse :focus erinnert: um > nur am CSS-Stil rumzufummeln, braucht's kein JavaScript. ACK. -- PointedEars FAQ: | SVN: Twitter: @PointedEars2 | ES Matrix: Please do not cc me. / Bitte keine Kopien per E-Mail.