SVGT 1.2: XML events vs. handler attributes

SVG Tiny 1.2 uses XML Events syntax, and does not support the event  
handler attributes as in SVG 1.1.

Here's an example from the spec:

<rect x="10" y="20" width="10" height="20" fill="red">
     <handler type="application/ecmascript" ev:event="ev:click">
       var myRect = evt.target;
       var width = myRect.getFloatTrait("width"));
       myRect.setFloatTrait("width", (width+10));
     </handler>
</rect>

With an onclick handler, and taking advantage of the fact that inline  
event handlers have the DOM object for the current element in scope,  
this could be written as:

<rect x="10" y="20" width="10" height="20" fill="red"
     onclick="var width = getFloatTrait('width'); setFloatTrait 
('width', (width+10));" />

This is easier to author, more concise, and likely to be more compact  
in memory at runtime (it saves one element, and one attribute, makes  
the JS code simpler, and removes the need to store the text contents  
of the handler for full DOM implementations). It seems that for a  
Tiny spec that is concerned ebough about footprint to leave out text  
nodes and non-trait attributes on SVG elements, this is needless bloat.

XML Events do make it easier to do obscure things. Like connect Java  
event handlers, or connect an event handler to an element far from  
the element in the document. But these things are already possible  
using the DOM API.

What is the reason, therefore, for dropping inline event handler  
attributes and replacing them with XML Events?

I recommend bringing back the inline event handler attributes.

I also recommend removing the altered subset of XML Events, since the  
novel functionality they provide is obscure and could just as well be  
done through script.

Regards,
Maciej

Received on Wednesday, 28 December 2005 11:11:16 UTC