- From: Rick Waldron <waldron.rick@gmail.com>
- Date: Tue, 21 Aug 2012 18:52:00 -0400
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: Brian Kardell <bkardell@gmail.com>, public-webapps <public-webapps@w3.org>, Ojan Vafai <ojan@chromium.org>
- Message-ID: <CAHfnhfqkus9SyQ2EKzrnVxBDhFq5igzGt=h9gRfBu7mekigF1A@mail.gmail.com>
On Tue, Aug 21, 2012 at 6:40 PM, Tab Atkins Jr. <jackalmage@gmail.com>wrote: > On Tue, Aug 21, 2012 at 3:29 PM, Rick Waldron <waldron.rick@gmail.com> > wrote: > > On Tue, Aug 21, 2012 at 6:17 PM, Tab Atkins Jr. <jackalmage@gmail.com> > > wrote: > >> ul.special > li { > >> onclick: "alert('You clicked me!'); > >> evt.target.classlist.add('clicked');"; > >> } > > > > > > This is certainly interesting, but... > > > > 1. It's a string that will have to be eval'ed, right? In what scope? Does > > this get wrapped in a function expression? > > No, it's a string that gets passed as an argument to setAttribute() > (or the moral equivalent of such). Any eval'ing that happens is just > part of the normal way that onfoo attributes are handled. > Ah-ha, I was thinking of this a bit too "script literally" > > > > 2. Using inline attributes that match up to node.onfoo will pave over > each > > other... if some other style sheet is introduced, by some third party > widget > > that happens to have > > > > ul.special > li { > > onclick: "alert('busted')"; > > } > > > > ...Bummer? > > Yes. That's why I just suggested the listen() function, which would > invoke addEventListener instead of setAttribute. > > This *would* require a little bit more detail about evaling the > string. I suppose it should just be passed through the Function > constructor in the global scope before being passed to aEL. > > > > 3. Where did "evt" come from? > > Isn't that one of the magically-defined variables in inline event > handlers? If not, swap it out with whatever the correct equivalent > is. > Nope? (Maybe in 1990's? :D ) > > > >> Here's a suggestion for a similar API that would invoke > >> addEventListener instead of setAttribute: > >> > >> ul.special > li { > >> onclick: listen("alert('You clicked me!'); > >> evt.target.classlist.add('clicked');"); > >> } > > > > How do we know where the body ends? > > Do you mean the function body? It's a string. The end is well-defined. > ^_^ > Yep, function body. The string broke over two lines and tricked my eyes and brain. ;) Rick > > ~TJ >
Received on Tuesday, 21 August 2012 22:52:49 UTC