Re: <script> as handler for XML events

smaug <[email protected]> Tue, 20 Jun 2006 19:09:50 +0300
Newsgroups gmane.comp.mozilla.devel.xml
Message-ID <[email protected]>
[email protected] wrote:
>> It would be great if W3C had a specification for script elements as XML
>> Events handlers.
>> (Still waiting to see the "companion specification",
>> http://www.w3.org/TR/xml-events/Overview.html#section-eventhandlers)
>>
> Agreed!
> 
>> Do Opera and NetFront handle <script> in the same way? For example, is
>> the event object accessible from the script (probably using |event| )
>> and what is the |this| object in the script?
>>From the DOM Level 2 Events specification, "The Event interface is used
> to provide contextual information about an event to the handler
> processing the event. An object which implements the Event interface is
> generally passed as the first parameter to an event handler."  As a way
> to allow the author access to the event parameter, both Opera and
> NetFront support an implicit object "event" that is scoped to the the
> <script> handler.
> Here is an example which works the same in both Opera and NetFront.
> You can
> try it with a copy of Opera 8.5:
> <?xml version="1.0"?>
> <html xmlns="http://www.w3.org/1999/xhtml"
>   xml:lang="en"
>   xmlns:ev="http://www.w3.org/2001/xml-events">
> <head><title>Mouse Click Event</title>
> 
>   <script type="text/javascript">
> 	var isDocLoaded = false;
>   </script>
> 
>   <script id="proxy" type="text/javascript"
>            ev:event="click" ev:observer="para">
>   if (isDocLoaded) {
>    alert("X="+event.screenX+" Y="+event.screenY);
>   }
>   </script>


So what is |this| in the <script> ? Is it |window|, |HTMLScriptElement| 
or the currentTarget of the |event| or what?

> 
>   <script type="text/javascript">
>     isDocLoaded = true;
>   </script>
> <body>
>    <h4>Mouse Click Event</h4>
>    <p id="para">Click anywhere in this paragraph.
> An alert should pop up with the X and Y location
> where you clicked.  Twinkle, twinkle little star,
> how I wonder what you are.  Up above the world
> so high like a diamond in the sky.  Twinkle,
> twinkle little star, how I wonder what you are.
> </p>
> </body>
> </html>
> 
>> How, or based on what is
>> the script execution deferred when the element is a handler (i.e. where
>> did the "declare" attribute come ;) that is not HTML4. XHTML2 Object
>> module has that attribute...)?
> Unfortunately 'declare="declare"' was dropped by the latest version of
> the XHTML 2 WD when <script> was replaced by <handler> (but the latest
> XHTML 2 WD is still incomplete -- the specification of the supported
> XML Events types is missing, for example). Both Opera and NetFront
> support 'declare="declare"', but the only truly portable and backwards
> compatible solution is to declare a variable "isDocLoaded" and set it
> to false before using a condition for execution of the event handler
> scripts, and then setting to true when done loading.
> 
> smaug wrote:
>> Chris Cross wrote:
>>> Jonas,
>>>
>>> I'm developing a Mozilla extension implementing XHTML+Voice, or X+V (see
>>> http://www.w3.org/TR/xhtml+voice/ and
>>> http://www.voicexml.org/specs/multimodal/x+v/12/) The X+V profile pulls
>>> in VoiceXML <form> and makes it a handler for XML events. However, to
>>> make a multimodal application truly interesting, the document author
>>> needs the ability to respond to the XML events emitted by VoiceXML.
>>> Opera and NetFront have implemented <script> as a handler by allowing it
>>> to be specified in the XML events <listener> element, without otherwise
>>> affecting the behavior of <script> (it still executes on page load, for
>>> example.) This approach is used in examples in the XML spec but is not
>>> normative. There was some discussion of including it in the Mozilla XML
>>> events implementation
>>> (https://bugzilla.mozilla.org/show_bug.cgi?id=164482) .
>>>
>>> What are the options to implement this behavior in Mozilla?
>>>
>>> chris
>> It would be great if W3C had a specification for script elements as XML
>> Events handlers.
>> (Still waiting to see the "companion specification",
>> http://www.w3.org/TR/xml-events/Overview.html#section-eventhandlers)
>>
>> Do Opera and NetFront handle <script> in the same way? For example, is
>> the event object accessible from the script (probably using |event| )
>> and what is the |this| object in the script? How, or based on what is
>> the script execution deferred when the element is a handler (i.e. where
>> did the "declare" attribute come ;) that is not HTML4. XHTML2 Object
>> module has that attribute...)?
>