- From: Doug Schepers <schepers@w3.org>
- Date: Sat, 19 Sep 2009 17:14:31 -0400
- To: www-dom@w3.org
Hi, Folks- Jonas Sicking wrote (on 9/19/09 4:28 PM): > 2009/9/19 Krzysztof MaczyĆski<1981km@gmail.com>: >> I'm strongly against removing namespace support from DOM Events. The use case >>for them is as valid as that for element types - to avoid clashes. > > There is an important difference. > > Elements and attributes use namespaces, but use a prefix mapping > mechanism so that you won't have to type the full namespace every > time. Events don't have that. > > With Events you'd always be writing: > > someEventFunction(..., "http://example.com/myNamespace", "myEvent", ...); > > With the proposed changed you'd instead write: > > someEventFunction(..., "http://example.com/myNamespace/myEvent", ...); > > where 'someEventFunction' is initEvent, addEventListener, > removeEventListener etc. > > So on the whole not that big of a difference. In addition to this, there is another important distinction. With namespaces in markup, implementations must all (at a minimum) parse the markup into the DOM, in the correct namespace; whether the UA does anything with that content beyond that depends on the namespaced language, the host language, and the native capabilities of the UA. It may be rendered, or it may simply provide metadata. Authors can still access and manipulate it, regardless of UA support. For example, if I have some XHTML, I can put SVG, MathML, and RDF content in it, each in its own namespace; if an browser doesn't support SVG, the SVG markup (and its metadata) is still there... <svg:title> and <svg:desc> can be rendered as text; if it doesn't support MathML, the equations are still there, and could be styled somewhat using CSS; and the RDF is there for any metadata extractor (as with some FF extensions). So, namespaced markup is still useful even if the implementation doesn't support the namespaced language (but does support namespaces in general). With events, however, if the implementation doesn't support the event, it does nothing else with it, and authors can't do anything more with it. Also, namespaced markup is more typically a large set of related elements and attributes. Events don't tend to be as tightly coupled with one another (at least on the same scale), and this smaller set of names allows for easier clash-proofing via naming conventions. For example, there might be a set of related events, 'dragstart', 'dragmove', and 'dragdrop', let's say... they could be done as namespaces ('drag:start', 'drag:move', and 'drag:drop'), but it's just as easy to keep that association with the event names, and is arguably easier and more descriptive. Clashes can be avoided simply with a prefix convention: 'ds_dragstart', 'ds_dragmove', and 'ds_dragdrop'. So, while I'm sympathetic to the extensibility use case, I am not convinced that namespaced events are as useful or as critical as namespaced markup, and namespaced events do add considerably to the implementation burden. The most compelling argument I could see is if other specs or content critically depends on keeping them, and thus far, I have not seen strong evidence for that (though I am still looking). That said, if we do introduce a generic event initializer with writable attributes prior to dispatch (as has been discussed), the namespaceURI could simply be another optional attribute, which should be relatively minor for implementers to support (though it would require keeping the NS-aware event listeners), and no burden to authors. Regards- -Doug Schepers W3C Team Contact, SVG and WebApps WGs
Received on Saturday, 19 September 2009 21:14:43 UTC