- From: poot <cvsmail@w3.org>
- Date: Fri, 07 Oct 2011 18:31:59 -0400
- To: public-html-diffs@w3.org
hixie: Tidy up how event handlers are defined to line up better with WebIDL and DOM Core (whatwg r6654) http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.5335&r2=1.5336&f=h http://html5.org/tools/web-apps-tracker?from=6653&to=6654 =================================================================== RCS file: /sources/public/html5/spec/Overview.html,v retrieving revision 1.5335 retrieving revision 1.5336 diff -u -d -r1.5335 -r1.5336 --- Overview.html 7 Oct 2011 22:01:40 -0000 1.5335 +++ Overview.html 7 Oct 2011 22:31:39 -0000 1.5336 @@ -50510,13 +50510,14 @@ list of <a href="#concept-event-listener" title="concept-event-listener">event listeners</a> associated with <var title="">T</var> with <i>type</i> set to the <dfn id="event-handler-event-type">event handler event type</dfn> corresponding to <var title="">H</var>, <i>capture</i> set to false, and <i>listener</i> - set to be an anonymous function that does nothing when the event - handler's value is not a <code><a href="#function">Function</a></code> object and <a href="#concept-function-invoke" title="concept-Function-invoke">invokes the <code>Function</code> - object</a> associated with the <a href="#event-handlers" title="event handlers">event - handler</a> otherwise. <a href="#refsDOMCORE">[DOMCORE]</a></p> + set to <a href="#the-event-handler-processing-algorithm">the event handler processing algorithm</a> defined + below. <a href="#refsDOMCORE">[DOMCORE]</a></p> <p class="note">The <i>listener</i> is emphatically <em>not</em> the - <a href="#event-handlers" title="event handlers">event handler</a> itself.</p> + <a href="#event-handlers" title="event handlers">event handler</a> itself. Every + event handler ends up registering the same <i>listener</i>, the + algorithm defined below, which takes care of invoking the right + callback, and processing the callback's return value.</p> <p class="note">This only happens the first time the <a href="#event-handlers" title="event handlers">event handler</a>'s value is set. Since listeners are called in the order they were registered, the order of @@ -50552,41 +50553,57 @@ not influence whether an <a href="#event-handlers" title="event handlers">event handler</a> is triggered or not.</p> - <p>When an <a href="#event-handlers" title="event handlers">event handler</a>'s - <code><a href="#function">Function</a></code> object is <dfn id="concept-function-invoke" title="concept-Function-invoke">invoked</dfn>, its <code title="dom-function-call"><a href="#dom-function-call">call()</a></code> callback must be invoked - with one argument, set to the <code><a href="#event">Event</a></code> object of the event - in question.</p> + <p>The <dfn id="the-event-handler-processing-algorithm">the event handler processing algorithm</dfn> for an + <a href="#event-handlers" title="event handlers">event handler</a> <var title="">H</var> and an <code><a href="#event">Event</a></code> object <var title="">E</var> is as follows:</p> - <p>The handler's return value must then be processed as follows:</p> + <ol><li><p>If <var title="">H</var>'s value is null, then abort these + steps.</li> - <dl class="switch"><dt>If the event type is <code class="event-mouseover">mouseover</code></dt> + <li><p>Let <var title="">callback</var> be <var title="">H</var>'s + value, the <code><a href="#function">Function</a></code> object that the <a href="#event-handlers" title="event + handlers">event handler</a> was last set to.</li> - <dd><p>If the return value is a boolean with the value true, then - the event must be canceled.</dd> + <li><p>Invoke <var title="">callback</var>'s <code title="dom-function-call"><a href="#dom-function-call">call()</a></code> operation with one + argument, the value of which is the <code><a href="#event">Event</a></code> object <var title="">E</var>, with the <i title="dfn-callback-this-value">callback this value</i> set to the + <var title="">E</var>'s <code title="dom-Event-currentTarget">currentTarget</code>. Let the + return value be <var title="">return value</var>. <a href="#refsWEBIDL">[WEBIDL]</a></p> - <dt>If the event object is a <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code> object</dt> + <li> - <dd><p>If the return value is a string, and the event object's - <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code> - attribute's value is the empty string, then set the <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code> - attribute's value to the return value.</dd> + <li> - <dt>Otherwise</dt> + <p>Process <var title="">return value</var> as follows:</p> - <dd><p>If the return value is a boolean with the value false, then - the event must be canceled.</dd> + <dl class="switch"><dt>If the event type is <code class="event-mouseover">mouseover</code></dt> - </dl></div><hr><p>The <code><a href="#function">Function</a></code> interface represents a function in the - scripting language being used. It is represented in IDL as + <dd><p>If <var title="">return value</var> is a boolean with the + value true, then cancel the event.</dd> + + <dt>If the <code><a href="#event">Event</a></code> object <var title="">E</var> is a + <code><a href="#beforeunloadevent">BeforeUnloadEvent</a></code> object</dt> + + <dd><p>If <var title="">return value</var> is a string, and the + <code><a href="#event">Event</a></code> object <var title="">E</var>'s <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code> + attribute's value is the empty string, then set the <code title="dom-BeforeUnloadEvent-returnValue"><a href="#dom-beforeunloadevent-returnvalue">returnValue</a></code> + attribute's value to <var title="">return value</var>.</dd> + + <dt>Otherwise</dt> + + <dd><p>If <var title="">return value</var> is a boolean with the + value false, then cancel the event.</dd> + + + + </dl></li> + + </ol></div><hr><p>The <code><a href="#function">Function</a></code> interface represents a function in the + scripting language being used. It is represented in Web IDL as follows:<pre class="idl">[Callback=FunctionOnly, NoInterfaceObject] interface <dfn id="function">Function</dfn> { any <a href="#dom-function-call" title="dom-function-call">call</a>(any... arguments); };</pre><p>The <dfn id="dom-function-call" title="dom-function-call"><code>call(...)</code></dfn> method is the object's callback.<p class="note">In JavaScript, any <code title="">Function</code> - object implements this interface.<p>If the <code><a href="#function">Function</a></code> object is a JavaScript <code title="">Function</code>, then when it is invoked by the user agent, - the user agent must set the <var title="">thisArg</var> (as defined - by ECMAScript edition 5 section 10.4.3 Entering Function Code) to - the <a href="#event-handlers" title="event handlers">event handler</a>'s object. <a href="#refsECMA262">[ECMA262]</a><div class="example"> + object implements this interface.<div class="example"> <p>For example, the following document fragment:</p> @@ -50596,11 +50613,13 @@ and an alert saying "<code title="">[object HTMLBodyElement]</code>" whenever the user clicks something in the page.</p> - </div><p>The return value of the function affects whether the event is - canceled or not: <span class="impl">as described above,</span> if - the return value is false, the event is canceled (except for <code class="event-mouseover">mouseover</code> events, where the return - value has to be true to cancel the event). With <code title="event-beforeunload">beforeunload</code> events, the value is - instead used to determine the message to show the user.<h5 id="event-handlers-on-elements-document-objects-and-window-objects"><span class="secno">6.1.6.2 </span>Event handlers on elements, <code><a href="#document">Document</a></code> objects, and <code><a href="#window">Window</a></code> objects</h5><p>The following are the <a href="#event-handlers">event handlers</a> (and their + </div><p class="note">The return value of the function affects whether the + event is canceled or not: <span class="impl">as described + above,</span> if the return value is false, the event is canceled + (except for <code class="event-mouseover">mouseover</code> events, + where the return value has to be true to cancel the event). With + <code title="event-beforeunload">beforeunload</code> events, the + value is instead used to determine the message to show the user.<h5 id="event-handlers-on-elements-document-objects-and-window-objects"><span class="secno">6.1.6.2 </span>Event handlers on elements, <code><a href="#document">Document</a></code> objects, and <code><a href="#window">Window</a></code> objects</h5><p>The following are the <a href="#event-handlers">event handlers</a> (and their corresponding <a href="#event-handler-event-type" title="event handler event type">event handler event types</a>) <span class="impl">that must be</span> supported by all <a href="#html-elements">HTML elements</a>, as both content attributes and
Received on Friday, 7 October 2011 22:32:05 UTC