- From: Mike Wilson <mikewse@hotmail.com>
- Date: Sun, 10 May 2009 12:28:08 +0200
- To: <www-dom@w3.org>
Thanks to Jonas for helping out in clarifying important parts here. Asking those of you that have taken part in the discussion of this action previously; what is your opinion at this point, and are there any other parts that you want clarified? Best regards Mike Wilson Mike Wilson wrote: > Jonas Sicking wrote: > > On Fri, May 1, 2009 at 6:00 AM, Mike Wilson > > <mikewse@hotmail.com> wrote: > > > i e user script event handlers should only > > > be visible to user scripts and not to page scripts, but I am not > > > sure on how feasible that is wrt how GreaseMonkey is implemented > > > today. > > > > I don't think that greasemonkey handlers should be exposed since I > > think that risks resulting in pages trying to fight off greasemonkey > > users. We have seen this in the past where pages try to detect > > greasemonkey and then block access to users that are running > > greasemonkey. > > Fine, then we agree here. > (I guess that pages could still try to detect Greasemonkey by > inspecting element and attribute changes.) > > > > So, having said this, what's your view on how these rules (or > > > variations of them) would affect the possibility of going forward > > > and specify event handler enumerability in DOM3? > > > > I'm still very unconvinced of the need for enumerability. I can sort > > of see the use case you are describing, but I do think the cost in > > implementation complexity is fairly high since the UA will need to > > keep track of several different types of event listeners. > > Right, separation of event handlers into different lists or > implementing support for "shadow nodes" that represent different > views of nodes, would be needed. These are all fairly common > patterns but I have of course no idea on the implications for UA > makers, and I will trust your experience here. > > > Further, the > > use case you are describing would not be entirely solved by the > > ability to enumerate listeners. As Boris points out, there's no > > guarentees that the listeners will work when moved to another DOM > > node. > > I have several years experience of providing exactly this > functionality (based on DOM0 event handlers only of course) and this > has never been considered a problem. Page authors understand that > a library can't rewrite their code to do "what they mean", and thus > design their event handlers whose elements will be subject to > transformation accordingly. The one issue that keeps coming up > regularly is that DOM2 event handlers are not preserved. > > Also, some of the scenarios are more about making multiple copies > and change structure just a little or not at all (with the latter > alternative being quite similar to cloneNode). In these cases > event handlers have access to the expected element structure, > assuming they start their navigation from |this| and not through > hard-wired references or similar, of course. > > > Also, adding enumerability doesn't add any new > capabilities. It would > > strictly be a convenience function. This since the page can always > > keep track of any listeners that it adds if it so desires. > > I agree it is technically possible but I consider this a non-solution. > Personally, I wouldn't want the bloat resulting from every JavaScript > library hooking in to event listener registration and saving its own > duplicate copies of every registered handler on the page. I certainly > wouldn't have page authors using my DOM transformation routines have > to register this kind of page-wide hook. > > Just to throw round some alternatives I'd say that my scenario with > client-side DOM transformations could be supported by the DOM in a > couple of different ways: > > 1) Allow enumeration of existing event handlers. (preferred) > > 2) Provide API to copy all event handlers from one node to another. > (this still doesn't need to expose the individual event handlers) > > 3) And, just for the sake of it, a combination of: > - allow cloneNode() to copy all event handlers > - allow change of element type (tagName) on existing element > (by far ugliest solution) > > Best regards > Mike > > >
Received on Sunday, 10 May 2009 10:28:55 UTC