cleaned up code, added normative prose to event descriptions
authorschepers
Wed, 09 Sep 2009 15:21:30 +0900
changeset 173 907e9c3384a8
parent 172 036b6f2b08c8
child 174 280c310050ee
cleaned up code, added normative prose to event descriptions
html/DOM3-Events.html
--- a/html/DOM3-Events.html	Wed Sep 09 04:42:08 2009 +0900
+++ b/html/DOM3-Events.html	Wed Sep 09 15:21:30 2009 +0900
@@ -9,6 +9,7 @@
     <link rel="alternate stylesheet" type="text/css" media="screen" title="geek" href="geek.css" />
     <link rel="stylesheet" type="text/css" href="./spec.css" />
     <link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-ED" />
+    <link rel="local stylesheet" type="text/css" href="W3C-WD.css" />
     <style type="text/css">
       .issue {
         background-color: #a9a9a9;
@@ -18,6 +19,7 @@
       .note {
         color:green;
       }
+      
       .example {
         border:1px solid #ffa500;
         background-color: #fffacd;
@@ -49,9 +51,14 @@
       .eventname {
         background-color: #cfcfcf;
       }
+      
+      a.eventtype {
+        text-decoration: none
+      }
+      
 
       /* style for heading links */
-      [id]:hover:after { 
+      a[id]:hover:after { 
         content: "   #" attr(id) " ยง "; 
         font-size: 80%;
         color: #ccc;
@@ -59,13 +66,14 @@
       }
       
       h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
-        color: inherit;
-        font-weight: inherit;
-        text-decoration: none;
-        font-style: inherit;
+        color: inherit !important;
+        font-weight: inherit !important;
+        text-decoration: none !important;
+        font-style: inherit !important;
       }
 
 
+
       /*style for keyIdentifiers keyCode charCode table*/
       table#tbl-keyIdentifiers-keyCode-charCode  { border: 1px solid black;  border-spacing: 0px; padding: 2px; }
       #tbl-keyIdentifiers-keyCode-charCode td { border: 1px solid #d3d3d3 }
@@ -123,7 +131,7 @@
       </p>
       <h1 id="Overview-title">Document Object Model (DOM) Level 3 Events Specification</h1>
 <!-- @@@ -->
-      <h2 id="Overview-W3C-doctype">W3C Editor's Draft <span class="date">8 September 2009</span></h2>
+      <h2 id="Overview-W3C-doctype">W3C Editor's Draft <span class="date">9 September 2009</span></h2>
       <dl>
         <dt>This version:</dt>
         <dd>
@@ -135,7 +143,7 @@
         </dd>
         <dt>Previous version:</dt>
         <dd>
-          <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.61">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.61</a>
+          <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.62">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.62</a>
         </dd>
         <dt>Editor's Draft:</dt>
         <dd>
@@ -173,7 +181,7 @@
         knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
         Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
         6 of the W3C Patent Policy</a>.</p>
-      <p id="working-draft">This is the <span class="date">8 September 2009</span> Editor's Draft version of the "Document Object Model (DOM) Level 3 Events" specification.  This document was previously published as a W3C Note, pending further feedback from implementers, and is now being revised to reflect the current state of implementation.  It is expected that this specification will progress to Recommendation status.</p>
+      <p id="working-draft">This is the <span class="date">9 September 2009</span> Editor's Draft version of the "Document Object Model (DOM) Level 3 Events" specification.  This document was previously published as a W3C Note, pending further feedback from implementers, and is now being revised to reflect the current state of implementation.  It is expected that this specification will progress to Recommendation status.</p>
       <p id="this-document-is-produced-by-the-web-app">This document is produced
         by the <a href="http://www.w3.org/2008/webapps/">Web Applications WG</a>,
         part of the <a href="http://www.w3.org/2006/rwc/Activity">Rich Web
@@ -511,6 +519,7 @@
         </div>
 <!-- div3 Conformance -->
       </div>
+      
 <!-- div1 glossary -->
       <div class="div1" id="glossary-glossary">
         <h1 class="glossary"><a id="glossary" href="#glossary">2. Glossary</a></h1>
@@ -620,14 +629,14 @@
           <span class="assert must">An implementation shall trigger a listener by invoking the <a href="#events-Events-EventListener-handleEvent"><code class="method-name">EventListener.handleEvent()</code></a> method or an equivalent binding-specific mechanism.</span>
         </p>
         <p><span class="assert must">As the final step of the event dispatch, for reasons of backwards compatibility, the implementation must reset the event object's internal-propagation and default-action-prevention states.</span> This ensures that an event object may be properly dispatched multiple times while also allowing to prevent the event objects propagation or <a href="#glossary-default-action">default actions</a> prior to the event dispatch.</p>
-        <p>In the production of the <a href="#glossary-propagation-path">propagation path</a>, if the <a href="#glossary-defaultView">defaultView</a> implements the <a href="#events-Events-EventTarget">EventTarget</a> interface, the event propagates from <a href="#glossary-defaultView">defaultView</a> to the <code>document</code> object during the <a href="#glossary-capture-phase">capture phase</a>, and from the <code>document</code> object to the <a href="#glossary-defaultView">defaultView</a> during the <a href="#glossary-bubbling-phase">bubble phase</a>.  Note that for legacy reasons, the <a href="#event-type-load">load</a> event does not bubble to the <a href="#glossary-defaultView">defaultView</a> in HTML implementations.</p>
+        <p>In the production of the <a href="#glossary-propagation-path">propagation path</a>, if the <a href="#glossary-defaultView">defaultView</a> implements the <a href="#events-Events-EventTarget">EventTarget</a> interface, the event propagates from <a href="#glossary-defaultView">defaultView</a> to the <code>document</code> object during the <a href="#glossary-capture-phase">capture phase</a>, and from the <code>document</code> object to the <a href="#glossary-defaultView">defaultView</a> during the <a href="#glossary-bubbling-phase">bubble phase</a>.  Note that for legacy reasons, the <a class="eventtype" href="#event-type-load"><code>load</code></a> event does not bubble to the <a href="#glossary-defaultView">defaultView</a> in HTML implementations.</p>
         <p>The model defined above must be applied regardless of the specific event flow associated with an event target. Each event flow must define how the propagation path shall be determined and which event phases are supported. The <em>DOM event flow</em> is an application of this model: the propagation path for a <code>Node</code> object shall be determined by its <code>Node.parentNode</code> chain, and if applicable, the document's containing <a href="#glossary-defaultView">defaultView</a>; all events accomplish the capture and target phases; whether an event accomplishes the bubble phase shall be defined individually for each event type. An alternate application of this model can be found in [<cite><a class="noxref informative" href="#references-DOMLS">DOM Level 3 Load and Save</a></cite>].</p>
         <p>Implementations of the DOM event model must be reentrant. Event listeners may perform actions that cause additional events to be dispatched. Such events are handled in a synchronous manner, the event propagation that causes the event listener to be triggered must resume only after the event dispatch of the new event is completed.</p>
       </div>
 <!-- div2 Events-flow -->
       <div class="div2">
         <h3 class="div2"><a id="event-flow-cancelation" href="#event-flow-cancelation">3.2 Default actions and cancelable events</a></h3>
-        <p>Event objects may have <a href="#glossary-default-action">default actions</a> associated with them.  These are actions the implementation must perform in combination with the dispatch of the event object.  An example is the [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] form element. When the user submits the form (e.g. by pressing on a submit button), the event <a href="#event-type-submit">submit</a> shall be dispatched to the element and the <a href="#glossary-default-action">default action</a> for this event type shall be generally to send a request to a Web server with the parameters from the form.</p>
+        <p>Event objects may have <a href="#glossary-default-action">default actions</a> associated with them.  These are actions the implementation must perform in combination with the dispatch of the event object.  An example is the [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] form element. When the user submits the form (e.g. by pressing on a submit button), the event <a class="eventtype" href="#event-type-submit"><code>submit</code></a> shall be dispatched to the element and the <a href="#glossary-default-action">default action</a> for this event type shall be generally to send a request to a Web server with the parameters from the form.</p>
         <p><a href="#glossary-default-action">Default actions</a> should be performed after the event dispatch has been completed, but in exceptional cases also immediately before the event is dispatched.</p>
         <span class="issue">@@ insert example here: &lt;input type="checkbox"&gt;'s .checked handling comes to mind.
         .checked is changed just before 'click' event is dispatched, and if
@@ -640,8 +649,8 @@
         <h3 class="div2"><a id="event-flow-activation" href="#event-flow-activation">3.3 Activation requests and behavior</a></h3>
         <p>(This section is currently being rewritten.)</p>
         <p>Event targets may have associated <a href="#glossary-activation-behavior">activation behavior</a> that implementations perform in response to an <em>activation request</em>. As an example, the typical activation behavior associated with hyperlinks is to follow the link. Activation requests are typically initiated by users through an input device.</p>
-        <p>In terms of this specification, the activation behavior of the event target shall be the <a href="#glossary-default-action">default action</a> of the event type <a href="#event-type-DOMActivate">DOMActivate</a>. DOM applications should use this event type whenever they wish to make or react to an activation request.</p>
-        <p>Implementations must dispatch the <code>DOMActivate</code> event as the <a href="#glossary-default-action">default action</a> of a <a href="#event-type-click">click</a> event. This click event shall be either part of the activation request (e.g., a user requests activiation using a mouse), or synthesized by the implementation to accomodate legacy applications. Context information of such a <code>click</code> event is implementation dependent.</p>
+        <p>In terms of this specification, the activation behavior of the event target shall be the <a href="#glossary-default-action">default action</a> of the event type <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a>. DOM applications should use this event type whenever they wish to make or react to an activation request.</p>
+        <p>Implementations must dispatch the <code>DOMActivate</code> event as the <a href="#glossary-default-action">default action</a> of a <a class="eventtype" href="#event-type-click"><code>click</code></a> event. This click event shall be either part of the activation request (e.g., a user requests activiation using a mouse), or synthesized by the implementation to accomodate legacy applications. Context information of such a <code>click</code> event is implementation dependent.</p>
         <p>When implementations dispatch a synthesized <code>click</code> event, the expectation shall be that they do so as <a href="#glossary-default-action">default action</a> of another event type. For example, when a user activates a hyperlink using a keyboard, the <code>click</code> event would be dispatched as <a href="#glossary-default-action">default action</a> of the respective keyboard event.</p>
         <p>Implementations are required to dispatch the synthesized <code>click</code> event as described above even if they do not dispatch such an event (e.g., when activation is requested by a voice command, since this specification does not address event types for voice input).</p>
         <p class="note"><strong>Note:</strong> The activation of an event target is device dependent but is also application dependent, e.g. a link in a document can be activated using a mouse click or a mouse double click.</p>
@@ -1183,7 +1192,7 @@
                     </dt>
                     <dd>
                       <div class="method">Creates an event object of the type specified.
-<div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">eventType</code> of type <code>DOMString</code></dt><dd><p>The <code>eventType</code> parameter specifies the name of the DOM Events interface to be supported by the created event object, e.g. <code>"Event"</code>, <code>"MouseEvent"</code>, <code>"MutationEvent"</code> and so on. If the <a href="#events-Events-Event"><code>Event</code></a> is to be dispatched via the <a href="#events-Events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method the appropriate event initialization method must be called after creation in order to initialize the <a class="noxref" href="#events-Events-Event"><code>Event</code></a>'s values.</p><p>As an example, a user wishing to synthesize some kind of <a href="#events-Events-UIEvent"><code>UIEvent</code></a> would invoke <a href="#events-Events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method could then be called on the newly created <a class="noxref" href="#events-Events-UIEvent"><code>UIEvent</code></a> object to set the specific type of user interface event to be dispatched, <a href="#event-type-DOMActivate">DOMActivate</a> for example, and set its context information, e.g. <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> in this example.</p><p>For backward compatibility reason, "UIEvents", "MouseEvents", "MutationEvents", and "HTMLEvents" feature names are valid values for the parameter <code>eventType</code> and represent respectively the interfaces "UIEvent", "MouseEvent", "MutationEvent", and "Event", and the characters 'a'..'z' are considered equivalent to the characters 'A'..'Z'.<br /></p></dd></dl></div></div>
+<div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">eventType</code> of type <code>DOMString</code></dt><dd><p>The <code>eventType</code> parameter specifies the name of the DOM Events interface to be supported by the created event object, e.g. <code>"Event"</code>, <code>"MouseEvent"</code>, <code>"MutationEvent"</code> and so on. If the <a href="#events-Events-Event"><code>Event</code></a> is to be dispatched via the <a href="#events-Events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method the appropriate event initialization method must be called after creation in order to initialize the <a class="noxref" href="#events-Events-Event"><code>Event</code></a>'s values.</p><p>As an example, a user wishing to synthesize some kind of <a href="#events-Events-UIEvent"><code>UIEvent</code></a> would invoke <a href="#events-Events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method could then be called on the newly created <a class="noxref" href="#events-Events-UIEvent"><code>UIEvent</code></a> object to set the specific type of user interface event to be dispatched, <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> for example, and set its context information, e.g. <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> in this example.</p><p>For backward compatibility reason, "UIEvents", "MouseEvents", "MutationEvents", and "HTMLEvents" feature names are valid values for the parameter <code>eventType</code> and represent respectively the interfaces "UIEvent", "MouseEvent", "MutationEvent", and "Event", and the characters 'a'..'z' are considered equivalent to the characters 'A'..'Z'.<br /></p></dd></dl></div></div>
                         <!-- parameters -->
                         <div class="return"><strong>Return Value</strong><div class="returntable"><table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0"><tr><td><p><a href="#events-Events-Event"><code>Event</code></a></p></td><td><p>The newly created event object.</p></td></tr></table></div></div>
                         <!-- return -->
@@ -1223,37 +1232,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-abort">abort</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-Event">
-                <code>Event</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-blur">blur</a>
-            </td>
-            <td>No</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-change">change</a>
+              <a class="eventtype" href="#event-type-abort"><code>abort</code></a>
             </td>
             <td>Yes</td>
             <td>No</td>
@@ -1268,265 +1247,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-click">click</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MouseEvent">
-                <code>MouseEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-compositionstart">compositionstart</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-CompositionEvent">
-                <code>CompositionEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-compositionupdate">compositionupdate</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-CompositionEvent">
-                <code>CompositionEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-compositionend">compositionend</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-CompositionEvent">
-                <code>CompositionEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-dblclick">dblclick</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MouseEvent">
-                <code>MouseEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMActivate">DOMActivate</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMAttributeNameChanged">DOMAttributeNameChanged</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MutationNameEvent">
-                <code>MutationNameEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMAttrModified">DOMAttrModified</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMCharacterDataModified">DOMCharacterDataModified</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td><code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>ProcessingInstruction</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMElementNameChanged">DOMElementNameChanged</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MutationNameEvent">
-                <code>MutationNameEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMFocusIn">DOMFocusIn</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMFocusOut">DOMFocusOut</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMNodeInserted">DOMNodeInserted</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</a>
-            </td>
-            <td>No</td>
-            <td>No</td>
-            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMNodeRemoved">DOMNodeRemoved</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</a>
-            </td>
-            <td>No</td>
-            <td>No</td>
-            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-DOMSubtreeModified">DOMSubtreeModified</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td><code>Document</code>, <code>DocumentFragment</code>, <code>Element</code>, <code>Attr</code></td>
-            <td>
-              <a href="#events-Events-MutationEvent">
-                <code>MutationEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-error">error</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-Event">
-                <code>Event</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-focus">focus</a>
+              <a class="eventtype" href="#event-type-blur"><code>blur</code></a>
             </td>
             <td>No</td>
             <td>No</td>
@@ -1541,22 +1262,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-focusin">focusin</a>
-            </td>
-            <td>Yes</td>
-            <td>No</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-focusout">focusout</a>
+              <a class="eventtype" href="#event-type-change"><code>change</code></a>
             </td>
             <td>Yes</td>
             <td>No</td>
@@ -1564,64 +1270,6 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-keydown">keydown</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-KeyboardEvent">
-                <code>KeyboardEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-keypress">keypress</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-KeyboardEvent">
-                <code>KeyboardEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-keyup">keyup</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-KeyboardEvent">
-                <code>KeyboardEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-load">load</a>
-            </td>
-            <td>No</td>
-            <td>No</td>
-            <td><code>Document</code>, <code>Element</code></td>
-            <td>
               <a href="#events-Events-Event">
                 <code>Event</code>
               </a>
@@ -1629,52 +1277,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-mousedown">mousedown</a>
-            </td>
-            <td>Yes</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MouseEvent">
-                <code>MouseEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-mouseenter">mouseenter</a>
-            </td>
-            <td>No</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MouseEvent">
-                <code>MouseEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-mouseleave">mouseleave</a>
-            </td>
-            <td>No</td>
-            <td>Yes</td>
-            <td>
-              <code>Element</code>
-            </td>
-            <td>
-              <a href="#events-Events-MouseEvent">
-                <code>MouseEvent</code>
-              </a>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <a href="#event-type-mousemove">mousemove</a>
+              <a class="eventtype" href="#event-type-click"><code>click</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1689,7 +1292,52 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-mouseout">mouseout</a>
+              <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-CompositionEvent">
+                <code>CompositionEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-CompositionEvent">
+                <code>CompositionEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-CompositionEvent">
+                <code>CompositionEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1704,7 +1352,293 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-mouseover">mouseover</a>
+              <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMAttributeNameChanged"><code>DOMAttributeNameChanged</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MutationNameEvent">
+                <code>MutationNameEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td><code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>ProcessingInstruction</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMElementNameChanged"><code>DOMElementNameChanged</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MutationNameEvent">
+                <code>MutationNameEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMNodeInserted"><code>DOMNodeInserted</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMNodeInsertedIntoDocument"><code>DOMNodeInsertedIntoDocument</code></a>
+            </td>
+            <td>No</td>
+            <td>No</td>
+            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMNodeRemoved"><code>DOMNodeRemoved</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMNodeRemovedFromDocument"><code>DOMNodeRemovedFromDocument</code></a>
+            </td>
+            <td>No</td>
+            <td>No</td>
+            <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-DOMSubtreeModified"><code>DOMSubtreeModified</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td><code>Document</code>, <code>DocumentFragment</code>, <code>Element</code>, <code>Attr</code></td>
+            <td>
+              <a href="#events-Events-MutationEvent">
+                <code>MutationEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-error"><code>error</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-Event">
+                <code>Event</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-focus"><code>focus</code></a>
+            </td>
+            <td>No</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>
+            </td>
+            <td>Yes</td>
+            <td>No</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-UIEvent">
+                <code>UIEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-KeyboardEvent">
+                <code>KeyboardEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-KeyboardEvent">
+                <code>KeyboardEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-KeyboardEvent">
+                <code>KeyboardEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-load"><code>load</code></a>
+            </td>
+            <td>No</td>
+            <td>No</td>
+            <td><code>Document</code>, <code>Element</code></td>
+            <td>
+              <a href="#events-Events-Event">
+                <code>Event</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1719,7 +1653,37 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-mouseup">mouseup</a>
+              <a class="eventtype" href="#event-type-mouseenter"><code>mouseenter</code></a>
+            </td>
+            <td>No</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MouseEvent">
+                <code>MouseEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mouseleave"><code>mouseleave</code></a>
+            </td>
+            <td>No</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MouseEvent">
+                <code>MouseEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1734,7 +1698,52 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-mousewheel">mousewheel</a>
+              <a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MouseEvent">
+                <code>MouseEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MouseEvent">
+                <code>MouseEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>
+            </td>
+            <td>Yes</td>
+            <td>Yes</td>
+            <td>
+              <code>Element</code>
+            </td>
+            <td>
+              <a href="#events-Events-MouseEvent">
+                <code>MouseEvent</code>
+              </a>
+            </td>
+          </tr>
+          <tr>
+            <td>
+              <a class="eventtype" href="#event-type-mousewheel"><code>mousewheel</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1747,7 +1756,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-reset">reset</a>
+              <a class="eventtype" href="#event-type-reset"><code>reset</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1762,7 +1771,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-resize">resize</a>
+              <a class="eventtype" href="#event-type-resize"><code>resize</code></a>
             </td>
             <td>Yes</td>
             <td>No</td>
@@ -1775,7 +1784,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-scroll">scroll</a>
+              <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a>
             </td>
             <td>No</td>
             <td>No</td>
@@ -1788,7 +1797,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-select">select</a>
+              <a class="eventtype" href="#event-type-select"><code>select</code></a>
             </td>
             <td>Yes</td>
             <td>No</td>
@@ -1803,7 +1812,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-submit">submit</a>
+              <a class="eventtype" href="#event-type-submit"><code>submit</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1818,7 +1827,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-textInput">textInput</a>
+              <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1833,7 +1842,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-unload">unload</a>
+              <a class="eventtype" href="#event-type-unload"><code>unload</code></a>
             </td>
             <td>No</td>
             <td>No</td>
@@ -1846,7 +1855,7 @@
           </tr>
           <tr>
             <td>
-              <a href="#event-type-wheel">wheel</a>
+              <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a>
             </td>
             <td>Yes</td>
             <td>Yes</td>
@@ -1858,7 +1867,7 @@
             </td>
           </tr>
         </table>
-        <p>As an example, the event <a href="#event-type-load">load</a> must trigger event listeners attached on <code>Element</code> nodes for that event and on the capture and target phases. This event cannot be cancelled. If an event listener for the <a href="#event-type-load">load</a> event is attached to a node other than <code>Document</code> or <code>Element</code> nodes, or if it is attached to the bubbling phase only, this event listener must not be triggered.</p>
+        <p>As an example, the event <a class="eventtype" href="#event-type-load"><code>load</code></a> must trigger event listeners attached on <code>Element</code> nodes for that event and on the capture and target phases. This event cannot be cancelled. If an event listener for the <a class="eventtype" href="#event-type-load"><code>load</code></a> event is attached to a node other than <code>Document</code> or <code>Element</code> nodes, or if it is attached to the bubbling phase only, this event listener must not be triggered.</p>
         <p>The event objects associated with the event types described above may contain context information. Refer to the description of the DOM interfaces for further information.</p>
       </div>
 <!-- div3 Events-EventTypes-complete -->
@@ -1969,7 +1978,7 @@
               <a class="noxref" href="#event-type-DOMFocusIn">DOMFocusIn</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMFocusIn</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type. This event type shall be dispatched after the event type <a href="#event-type-focus">focus</a>.  This event type is deprecated in favor of the equivalent event type <a class="noxref" href="#event-type-focusin">focusin</a>.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type. This event type shall be dispatched after the event type <a class="eventtype" href="#event-type-focus"><code>focus</code></a>.  This event type is deprecated in favor of the equivalent event type <a class="noxref" href="#event-type-focusin">focusin</a>.</dd>
           </dl>
         </div>
 <!-- DOMFocusOut -->
@@ -1980,7 +1989,7 @@
               <a class="noxref" href="#event-type-DOMFocusOut">DOMFocusOut</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMFocusOut</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type. This event type shall be dispatched after the event type <a href="#event-type-blur">blur</a>.  This event type is deprecated in favor of the equivalent event type <a class="noxref" href="#event-type-focusout">focusout</a>.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type. This event type shall be dispatched after the event type <a class="eventtype" href="#event-type-blur"><code>blur</code></a>.  This event type is deprecated in favor of the equivalent event type <a class="noxref" href="#event-type-focusout">focusout</a>.</dd>
           </dl>
         </div>
 <!-- focus -->
@@ -1991,7 +2000,7 @@
               <a class="noxref" href="#event-type-focus">focus</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>focus</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type.</dd>
           </dl>
         </div>
 <!-- focusin -->
@@ -2002,7 +2011,7 @@
               <a class="noxref" href="#event-type-DOMFocusIn">focusin</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMFocusIn</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type. This event type shall be dispatched after the event type <a href="#event-type-focus">focus</a>.  This event type is similar to <a href="#event-type-focus">focus</a>, but it must include the <a href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> receives focus. The focus shall be given to the element before the dispatch of this event type. This event type shall be dispatched after the event type <a class="eventtype" href="#event-type-focus"><code>focus</code></a>.  This event type is similar to <a class="eventtype" href="#event-type-focus"><code>focus</code></a>, but it must include the <a href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
           </dl>
         </div>
 <!-- focusout -->
@@ -2013,7 +2022,7 @@
               <a class="noxref" href="#event-type-DOMFocusOut">focusout</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMFocusOut</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type. This event type shall be dispatched after the event type <a href="#event-type-blur">blur</a>.  This event type is similar to <a href="#event-type-blur">blur</a>, but it must include the <a href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type. This event type shall be dispatched after the event type <a class="eventtype" href="#event-type-blur"><code>blur</code></a>.  This event type is similar to <a class="eventtype" href="#event-type-blur"><code>blur</code></a>, but it must include the <a href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
           </dl>
         </div>
 <!-- blur -->
@@ -2024,7 +2033,7 @@
               <a class="noxref" href="#event-type-blur">blur</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>blur</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-    An <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type.</dd>
+    A user agent must dispatch this event when an <a href="#glossary-event-target">event target</a> loses focus. The focus shall be taken from the element before the dispatch of this event type.</dd>
           </dl>
         </div>
       </div>
@@ -2042,7 +2051,7 @@
               <a class="noxref" href="#event-type-load">load</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>load</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      The DOM Implementation finishes loading the resource (such as the document) and any dependent resources (such as images, style sheets, or scripts). Dependent resources that fail to load must not prevent this event from firing if the resource that loaded them is still accessible via the DOM. If this event type is dispatched, implementations are required to dispatch this event at least on the <code>Document</code> node.</dd>
+      A user agent must dispatch this event when the DOM implementation finishes loading the resource (such as the document) and any dependent resources (such as images, style sheets, or scripts). Dependent resources that fail to load must not prevent this event from firing if the resource that loaded them is still accessible via the DOM. If this event type is dispatched, implementations are required to dispatch this event at least on the <code>Document</code> node.</dd>
           </dl>
         </div>
         
@@ -2053,7 +2062,7 @@
               <a class="noxref" href="#event-type-unload">unload</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>unload</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      The DOM implementation removes from the environment the resource (such as the document) or any dependent resources (such as images, style sheets, scripts). The document shall be unloaded after the dispatch of this event type. If this event type is dispatched, implementations are required to dispatch this event at least on the <code>Document</code> node.</dd>
+      A user agent must dispatch this event when the DOM Implementation removes from the environment the resource (such as the document) or any dependent resources (such as images, style sheets, scripts). The document shall be unloaded after the dispatch of this event type. If this event type is dispatched, implementations are required to dispatch this event at least on the <code>Document</code> node.</dd>
           </dl>
         </div>
         
@@ -2064,7 +2073,7 @@
               <a class="noxref" href="#event-type-abort">abort</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>abort</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      Loading of a resource has been aborted.</dd>
+      A user agent must dispatch this event when the loading of a resource has been aborted.</dd>
           </dl>
         </div>
         
@@ -2075,7 +2084,7 @@
               <a class="noxref" href="#event-type-error">error</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>error</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      A resource failed to load, or has been loaded but cannot be interpreted according to its semantics such as an invalid image, a script execution error, or non-well-formed XML.</dd>
+      A user agent must dispatch this event when a resource failed to load, or has been loaded but cannot be interpreted according to its semantics, such as an invalid image, a script execution error, or non-well-formed XML.</dd>
           </dl>
         </div>
         
@@ -2085,8 +2094,8 @@
             <dt id="event-type-select">
               <a class="noxref" href="#event-type-select">select</a>
             </dt>
-            <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>select</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      A user selects some text. DOM Level 3 Events does not provide contextual information to access the selected text. The selection occurred before the dispatch of this event type.</dd>
+            <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>select</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.  The value of the <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute shall be the selected text range as a string.</td></tr></table>
+      A user agent must dispatch this event when a user selects some text.  The user agent must make the selected text passage available through the <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute. <span class="issue">@@ should the selection include the markup structure, or just the text-content?</span>  This event is dispatched after the selection has occurred.</dd>
           </dl>
         </div>
         
@@ -2097,7 +2106,7 @@
               <a class="noxref" href="#event-type-change">change</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>change</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      A control loses the input focus and its value has been modified since gaining focus. This event type shall be dispatched before the event type <a href="#event-type-blur">blur</a>.</dd>
+      A user agent must dispatch this event when a form control loses the input focus and its value has been modified since gaining focus. This event type shall be dispatched before the event type <a class="eventtype" href="#event-type-blur"><code>blur</code></a>.</dd>
           </dl>
         </div>
 
@@ -2108,7 +2117,7 @@
               <a class="noxref" href="#event-type-submit">submit</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>submit</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      A form, such as a [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] or [<cite><a class="noxref informative" href="#references-XHTML10">XHTML 1.0</a></cite>] form, is submitted.</dd>
+      A user agent must dispatch this event when a form, such as a [<cite><a class="noxref informative" href="#references-HTML5">HTML 5</a></cite>] or [<cite><a class="noxref informative" href="#references-XHTML10">XHTML 1.0</a></cite>] form, is submitted. <span class="issue">@@ is this event dispatched before or after the form is submitted?  what is the cancel behavior?</span></dd>
           </dl>
         </div>
 
@@ -2119,7 +2128,7 @@
               <a class="noxref" href="#event-type-reset">reset</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>reset</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Events-Event"><code>Event</code></a> otherwise.</td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> may be in use.</td></tr></table>
-      A form, such as a [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] or [<cite><a class="noxref informative" href="#references-XHTML10">XHTML 1.0</a></cite>] form, is reset.</dd>
+      A user agent must dispatch this event when a form, such as a [<cite><a class="noxref informative" href="#references-HTML5">HTML 5</a></cite>] or [<cite><a class="noxref informative" href="#references-XHTML10">XHTML 1.0</a></cite>] form, is reset. <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute. <span class="issue">@@ is this event dispatched before or after the form is reset?  what is the cancel behavior?</span></dd>
           </dl>
         </div>
 
@@ -2130,7 +2139,7 @@
               <a class="noxref" href="#event-type-resize">resize</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>resize</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-      A document view or an element has been resized. The resize occurred before the dispatch of this event type.</dd>
+      A user agent must dispatch this event when a document view or an element has been resized. This event type is dispatched after the resize has occurred.</dd>
           </dl>
         </div>
 
@@ -2141,7 +2150,7 @@
               <a class="noxref" href="#event-type-scroll">scroll</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>scroll</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> is in use.</td></tr></table>
-      A document view or an element has been scrolled. The scroll occurred before the dispatch of this event type.</dd>
+      A user agent must dispatch this event when a document view or an element has been scrolled.  This event type is dispatched after the scroll has occurred.</dd>
           </dl>
         </div>
       </div>
@@ -2160,25 +2169,25 @@
       <p>Certain mouse events occur in a set order relative to one another.</p>
       <p>The following is the typical sequence of events when a pointing device's cursor is moved over an element:</p>
       <ol>
-        <li>mousemove</li>
-        <li>mouseover</li>
-        <li>mouseenter</li>
-        <li>mousemove (multiple events)</li>
-        <li>mouseout</li>
-        <li>mouseleave</li>
+        <li><a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a></li>
+        <li><a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a></li>
+        <li><a class="eventtype" href="#event-type-mouseenter"><code>mouseenter</code></a></li>
+        <li><a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a> (multiple events)</li>
+        <li><a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a></li>
+        <li><a class="eventtype" href="#event-type-mouseleave"><code>mouseleave</code></a></li>
       </ol>
       
       <p>The following is the typical sequence of events when a button associated with a pointing device (e.g., a mouse button or trackpad) is pressed and released over an element:</p>
       <ol>
-        <li>mousedown</li>
-        <li>mousemove (optional, multiple events, some limits)</li>
-        <li>mouseup</li>
-        <li>click</li>
-        <li>mousemove (optional, multiple events, some limits)</li>
-        <li>dblclick</li>
+        <li><a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a></li>
+        <li><a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a> (optional, multiple events, some limits)</li>
+        <li><a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a></li>
+        <li><a class="eventtype" href="#event-type-click"><code>click</code></a></li>
+        <li><a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a> (optional, multiple events, some limits)</li>
+        <li><a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a></li>
       </ol>
       
-      <p>Note that the lag time, degree, distance, and number of mousemove events allowed while still firing a click or dblclick event shall be implementation-, device-, and platform-specific.  Each implementation should determine the appropriate hysteresis tolerance, but in general should fire click and dblclick events when the event target of the associated mousedown and mouseup events is the same element with no mouseout or mouseleave events intervening, and should not fire click and dblclick events when the event target of the associated mousedown and mouseup events is different.</p>
+      <p>Note that the lag time, degree, distance, and number of <a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a> events allowed between the <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> and <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> events while still firing a <a class="eventtype" href="#event-type-click"><code>click</code></a> or <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> event shall be implementation-, device-, and platform-specific.  Each implementation should determine the appropriate hysteresis tolerance, but in general should fire <a class="eventtype" href="#event-type-click"><code>click</code></a> and <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> events when the event target of the associated <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> and <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> events is the same element with no <a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a> or <a class="eventtype" href="#event-type-mouseleave"><code>mouseleave</code></a> events intervening, and should not fire <a class="eventtype" href="#event-type-click"><code>click</code></a> and <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> events when the event target of the associated <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> and <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> events is different.</p>
 
       <dl>
         <dt><strong>Interface <em><a id="events-Events-MouseEvent">MouseEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
@@ -2316,7 +2325,7 @@
         </dd>
       </dl>
       <p>The Mouse event types are listed below. In the case of nested elements, mouse event types are always targeted at the most deeply nested element. Ancestors of the targeted element may use bubbling to obtain notification of mouse events which occur within its descendent elements.</p>
-      <p id="events-dt-current-click-count">Implementations must maintain the <em>current click count</em> when generating mouse events. This shall be a non-negative integer indicating the number of consecutive clicks of a pointing device button during a user action. The notion of consecutive clicks depends on the environment configuration. For example, a <code><a href="#event-type-dblclick">dblclick</a></code> event type might not happen if there is a long delay between the two clicks.
+      <p id="events-dt-current-click-count">Implementations must maintain the <em>current click count</em> when generating mouse events. This shall be a non-negative integer indicating the number of consecutive clicks of a pointing device button during a user action. The notion of consecutive clicks depends on the environment configuration. For example, a <code><a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a></code> event type might not happen if there is a long delay between the two clicks.
       <span class="note"><strong>Note:</strong> The value of <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> for a number of clicks greater than 2 is platform-dependent.  For example, on the Windows OS, the click-count series seems to be <code>1, 2, 3, 2, 3</code>, while on MacOS, the click-count series seems to be <code>1, 2, 3, 4, 5, ...</code>.</span></p>
 <!-- click -->
 
@@ -2336,7 +2345,7 @@
                 following values: [...]" followed by the default action being to fire 
                 'mouseup' or 'click' or whatever, with the same detail for that, and also 
                 with rules for how to handle mouseover, mouseenter, mouseleave, etc. Same 
-                for keyboards, mousewheels, etc. Basically any user interaction event. --></p><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>click</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. The <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute indicates the <a href="#events-dt-current-click-count">current click count</a>. The attribute value shall be <code>1</code> when the user begins this action and increments by <code>1</code> for each click.</td></tr></table><!-- A pointing device button is clicked over an element. The definition of a click depends on the environment configuration; i.e. it may depend on the screen location or the delay between the press and release of the pointing device button. In any case, the event target must be the same between the <a href="#event-type-mousedown">mousedown</a>, <a href="#event-type-mouseup">mouseup</a>, and <a href="#event-type-click">click</a>. The sequence of these events is: <a href="#event-type-mousedown">mousedown</a>, <a href="#event-type-mouseup">mouseup</a>, and <a href="#event-type-click">click</a>. It depends on the environment configuration whether the event type <a href="#event-type-click">click</a> can occur if one or more of the event types <a href="#event-type-mouseover">mouseover</a>, <a href="#event-type-mousemove">mousemove</a>, and <a href="#event-type-mouseout">mouseout</a> occur between the press and release of the pointing device button. In addition, the event type is dispatched as described in <a href="#event-flow-activation">Activation requests and behavior</a>. -->
+                for keyboards, mousewheels, etc. Basically any user interaction event. --></p><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>click</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. The <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute indicates the <a href="#events-dt-current-click-count">current click count</a>. The attribute value shall be <code>1</code> when the user begins this action and increments by <code>1</code> for each click.</td></tr></table><!-- A pointing device button is clicked over an element. The definition of a click depends on the environment configuration; i.e. it may depend on the screen location or the delay between the press and release of the pointing device button. In any case, the event target must be the same between the <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a>, <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>, and <a class="eventtype" href="#event-type-click"><code>click</code></a>. The sequence of these events is: <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a>, <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>, and <a class="eventtype" href="#event-type-click"><code>click</code></a>. It depends on the environment configuration whether the event type <a class="eventtype" href="#event-type-click"><code>click</code></a> can occur if one or more of the event types <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>, <a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a>, and <a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a> occur between the press and release of the pointing device button. In addition, the event type is dispatched as described in <a href="#event-flow-activation">Activation requests and behavior</a>. -->
                 The <a href="#event-type-click"><code>click</code></a> event must be dispatched on the <a href="#glossary-topmost-event-target">topmost event target</a> indicated by the pointer, when the user presses down and releases the pointer button, or otherwise activates the pointer in a manner that simulates such an action.  Activation of the button may depend upon the pointer device and the environment configuration, e.g. it may depend on the screen location or the delay between the press and release of the pointing device button.  The <a href="#event-type-click"><code>click</code></a> event may be preceded by the <a href="#event-type-mousedown"><code>mousedown</code></a> and <a href="#event-type-mouseup"><code>mouseup</code></a> events on the same element.  Depending upon the environment configuration, the <a href="#event-type-click"><code>click</code></a> event may be dispatched if one or more of the event types <a href="#event-type-mouseover"><code>mouseover</code></a>, <a href="#event-type-mousemove"><code>mousemove</code></a>, and <a href="#event-type-mouseout"><code>mouseout</code></a> occur between the press and release of the pointing device button.  The <a href="#event-type-click"><code>click</code></a> event may also be followed by the <a href="#event-type-dblclick"><code>dblclick</code></a> event.  The <a href="#event-type-click"><code>click</code></a> event type must be dispatched as described in <a href="#event-flow-activation">Activation requests and behavior</a>.
             </dd>
         </dl>
@@ -2349,8 +2358,8 @@
             <a class="noxref" href="#event-type-dblclick">dblclick</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>dblclick</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. The <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute indicates the <a href="#events-dt-current-click-count">current click count</a>.</td></tr></table>
-    A pointing device button is clicked twice over an element. The definition of a double click depends on the environment configuration, except that the event target must be the same between <a href="#event-type-mousedown">mousedown</a>, <a href="#event-type-mouseup">mouseup</a>, and <a href="#event-type-dblclick">dblclick</a>. This event type must be dispatched after the event type <a href="#event-type-click">click</a> if a click and double click occur simultaneously, and after the event type <a href="#event-type-mouseup">mouseup</a> otherwise.
-              <p class="note"><strong>Note:</strong> Canceling the <a href="#event-type-click">click</a> event must not not affect the firing of a <a href="#event-type-dblclick">dblclick</a> event.</p></dd>
+     A user agent must dispatch this event when a pointing device button is clicked twice over an element. The definition of a double click depends on the environment configuration, except that the event target must be the same between <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a>, <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>, and <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a>. This event type must be dispatched after the event type <a class="eventtype" href="#event-type-click"><code>click</code></a> if a click and double click occur simultaneously, and after the event type <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> otherwise.
+              <p class="note"><strong>Note:</strong> Canceling the <a class="eventtype" href="#event-type-click"><code>click</code></a> event must not not affect the firing of a <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> event.</p></dd>
         </dl>
       </div>
 <!-- mousedown -->
@@ -2361,7 +2370,7 @@
             <a class="noxref" href="#event-type-mousedown">mousedown</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mousedown</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. The <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute indicates the <a href="#events-dt-current-click-count">current click count</a> incremented by one. For example, if no click happened before the mousedown, <a class="noxref" href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> must contain the value <code>1</code>.</td></tr></table>
-    A pointing device button must be pressed over an element.</dd>
+     A user agent must dispatch this event when a pointing device button is pressed over an element.</dd>
         </dl>
       </div>
 <!-- mouseenter -->
@@ -2372,7 +2381,7 @@
             <a class="noxref" href="#event-type-mouseenter">mouseenter</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseenter</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> a pointing device is exiting, if any.</td></tr></table>
-              A pointing device is moved onto an element.  This event type is similar to <a class="noxref" href="#event-type-mouseover">mouseover</a>, but for <a class="noxref" href="#event-type-mouseenter">mouseenter</a>, the <a href="#glossary-propagation-path">propagation path</a> must end at the <a href="#glossary-event-target">event target</a> element, and must not include the target element's child nodes as <a href="#glossary-event-target">event targets</a>. 
+       A user agent must dispatch this event when a pointing device is moved onto an element.  This event type is similar to <a class="noxref" href="#event-type-mouseover">mouseover</a>, but for <a class="noxref" href="#event-type-mouseenter">mouseenter</a>, the <a href="#glossary-propagation-path">propagation path</a> must end at the <a href="#glossary-event-target">event target</a> element, and must not include the target element's child nodes as <a href="#glossary-event-target">event targets</a>. 
 
               <p class="note"><strong>Note:</strong> This is the event type equivalent of the CSS <a href="http://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes" title="Selectors"><code>:hover</code> pseudo-class</a><a href="#references-CSS2">[CSS2]</a>.  This matches the <a class="noxref" href="#event-type-mouseleave">mouseleave</a> event type in its <a href="#glossary-propagation-path">propagation path</a> behavior.</p></dd>
         </dl>
@@ -2386,7 +2395,7 @@
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseout</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> a pointing device is entering, if any.</td></tr></table>
 
-              A pointing device is moved away from an element.  This event type is similar to <a class="noxref" href="#event-type-mouseout">mouseout</a>, but for <a class="noxref" href="#event-type-mouseleave">mouseleave</a>, the <a href="#glossary-propagation-path">propagation path</a> must end at the <a href="#glossary-event-target">event target</a> element, and must not include the target element's child nodes as <a href="#glossary-event-target">event targets</a>. 
+       A user agent must dispatch this event when a pointing device is moved off of an element.  This event type is similar to <a class="noxref" href="#event-type-mouseout">mouseout</a>, but for <a class="noxref" href="#event-type-mouseleave">mouseleave</a>, the <a href="#glossary-propagation-path">propagation path</a> must end at the <a href="#glossary-event-target">event target</a> element, and must not include the target element's child nodes as <a href="#glossary-event-target">event targets</a>. 
               <p class="note"><strong>Note:</strong> This matches the <a class="noxref" href="#event-type-mouseenter">mouseenter</a> event type in its <a href="#glossary-propagation-path">propagation path</a> behavior.</p></dd>
         </dl>
       </div>
@@ -2399,7 +2408,7 @@
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mousemove</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use.</td></tr></table>
 
-            A pointing device is moved while it is over an element.  The frequency rate of events while the pointing device is moved shall be implementation-, device-, and platform-specific, but multiple consecutive <a href="#event-type-mousemove"><code>mousemove</code></a> events should be fired for sustained pointer-device movement, rather than a single event for each instance of mouse movement.  Implementations are encouraged to determine the optimal frequency rate to balance responsiveness with performance.</dd>
+     A user agent must dispatch this event when a pointing device is moved while it is over an element.  The frequency rate of events while the pointing device is moved shall be implementation-, device-, and platform-specific, but multiple consecutive <a href="#event-type-mousemove"><code>mousemove</code></a> events should be fired for sustained pointer-device movement, rather than a single event for each instance of mouse movement.  Implementations are encouraged to determine the optimal frequency rate to balance responsiveness with performance.</dd>
         </dl>
       </div>
 <!-- mouseout -->
@@ -2410,7 +2419,7 @@
             <a class="noxref" href="#event-type-mouseout">mouseout</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseout</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> a pointing device is entering, if any.</td></tr></table>
-              A pointing device is moved away from an element.
+       A user agent must dispatch this event when a pointing device is moved off of an element.
               This event type is similar to <a class="noxref" href="#event-type-mouseleave">mouseleave</a>, but for <a class="noxref" href="#event-type-mouseout">mouseout</a>, the <a href="#glossary-propagation-path">propagation path</a> must include the target element's child nodes as <a href="#glossary-event-target">event targets</a>.  The <a class="noxref" href="#event-type-mouseout">mouseout</a> event type matches the <a class="noxref" href="#event-type-mouseover">mouseover</a> event type in its <a href="#glossary-propagation-path">propagation path</a> behavior.
           </dd>
         </dl>
@@ -2423,7 +2432,7 @@
             <a class="noxref" href="#event-type-mouseover">mouseover</a>
           </dt>
           <dd><table summary="This table contains information about the semantics of the given event type" border="0" cellpadding="2" cellspacing="0"><tbody><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseover</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> a pointing device is exiting, if any.</td></tr></tbody></table>
-              A pointing device is moved onto an element.
+       A user agent must dispatch this event when a pointing device is moved onto an element.
               This event type is similar to <a class="noxref" href="#event-type-mouseenter">mouseenter</a>, but for <a class="noxref" href="#event-type-mouseover">mouseover</a>, the <a href="#glossary-propagation-path">propagation path</a> must include the target element's child nodes as <a href="#glossary-event-target">event targets</a>.  The <a class="noxref" href="#event-type-mouseover">mouseover</a> event type matches the <a class="noxref" href="#event-type-mouseout">mouseout</a> event type in its <a href="#glossary-propagation-path">propagation path</a> behavior.
           </dd>
         </dl>
@@ -2437,7 +2446,7 @@
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseup</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseEvent"><code>MouseEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. The <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> attribute indicates the <a href="#events-dt-current-click-count">current click count</a> incremented by one.</td></tr></table>
 
-            A pointing device button is released over an element.</dd>
+     A user agent must dispatch this event when a pointing device button is released over an element.</dd>
         </dl>
       </div>
     </div>
@@ -2544,7 +2553,7 @@
             <a class="noxref" href="#event-type-mousewheel">mousewheel</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mousewheel</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MouseWheelEvent"><code>MouseWheelEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MouseWheelEvent-wheelDelta"><code>MouseWheelEvent.wheelDelta</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, and <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a> are in use if the wheel is associated to a pointing device. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> the pointing device is pointing at, if any. <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> is not in use.</td></tr></table>
-        A mouse wheel has been rotated around the y-axis.</dd>
+ A user agent must dispatch this event when a mouse wheel has been rotated around the y-axis.</dd>
         </dl>
       </div>
     </div>
@@ -2724,14 +2733,14 @@
             <a class="noxref" href="#event-type-wheel">wheel</a>
           </dt>
           <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>wheel</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-WheelEvent"><code>WheelEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Document</code>, <code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-WheelEvent-deltaX"><code>WheelEvent.deltaX</code></a>, <a href="#events-Events-WheelEvent-deltaY"><code>WheelEvent.deltaY</code></a>, <a href="#events-Events-WheelEvent-deltaZ"><code>WheelEvent.deltaZ</code></a>, <a href="#events-Events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>, <a href="#events-Events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>, <a href="#events-Events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>, <a href="#events-Events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>, and <a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a> are in use. <a href="#events-Events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>, <a href="#events-Events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>, <a href="#events-Events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>, <a href="#events-Events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>, and <a href="#events-Events-MouseEvent-button"><code>MouseEvent.button</code></a> are in use if the wheel is associated to a pointing device. <a href="#events-Events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a> indicates the <a href="#glossary-event-target">event target</a> the pointing device is pointing at, if any. <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> is not in use.</td></tr></table>
-        A mouse wheel has been rotated. A <a href="#glossary-default-action">default action</a> of user agent generated event objects of this type causes implementations to dispatch a <code>mousewheel</code> event iff it supports that event type and <a href="#events-Events-WheelEvent-deltaY"><code>WheelEvent.deltaY</code></a> is non-zero.</dd>
+ A user agent must dispatch this event when a mouse wheel has been rotated. A <a href="#glossary-default-action">default action</a> of user agent generated event objects of this type causes implementations to dispatch a <code>mousewheel</code> event iff it supports that event type and <a href="#events-Events-WheelEvent-deltaY"><code>WheelEvent.deltaY</code></a> is non-zero.</dd>
         </dl>
       </div>
 <!-- div3 Events-eventgroupings-uievents -->
       <div class="div3">
         <h3 class="div3"><a id="events-textevents" href="#events-textevents">5.2.6 Text Events Types</a></h3>
         <p>This module defines the feature TextEvents 3.0 and depends on the feature UIEvents 3.0.</p>
-        <p>The text event module originates from the [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] <code>onkeypress</code> attribute. Unlike this attribute, the event type <a href="#event-type-textInput">textInput</a> applies only to characters and is designed for use with any text input devices, not just keyboards. Refer to <a href="#keyset">Keyboard events and key identifiers</a> for examples on how text events are used in combination with keyboard events.</p>
+        <p>The text event module originates from the [<cite><a class="noxref informative" href="#references-HTML40">HTML 4.01</a></cite>] <code>onkeypress</code> attribute. Unlike this attribute, the event type <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> applies only to characters and is designed for use with any text input devices, not just keyboards. Refer to <a href="#keyset">Keyboard events and key identifiers</a> for examples on how text events are used in combination with keyboard events.</p>
         <dl>
           <dt><strong>Interface <em><a id="events-Events-TextEvent">TextEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
           <dd>
@@ -2912,7 +2921,7 @@
               <a class="noxref" href="#event-type-textInput">textInput</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>textInput</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-TextEvent"><code>TextEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-TextEvent-data"><code>TextEvent.data</code></a>, and <a href="#events-Events-TextEvent-inputMode"><code>TextEvent.inputMode</code></a> are in use.</td></tr></table>
-One or more characters have been entered. The characters can originate from a variety of sources. For example, it could be characters resulting from a key being pressed or released on a keyboard device, characters resulting from the processing of an <a href="#glossary-ime">input method editor</a>, or resulting from a voice command. Where a "paste" operation generates a simple sequence of characters, i.e. a text without any structure or style information, this event type should be generated as well.</dd>
+               A user agent must dispatch this event when one or more characters have been entered. These characters may originate from a variety of sources, e.g., characters resulting from a key being pressed or released on a keyboard device, from the processing of an <a href="#glossary-ime">input method editor</a>, or resulting from a voice command.  Where a "paste" operation generates a simple sequence of characters, i.e. a text passage without any structure or style information, this event type should be generated as well.</dd>
           </dl>
         </div>
       </div>
@@ -3047,7 +3056,7 @@
                   <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-shiftKey">shiftKey</a></code> of type <code>boolean</code>, readonly</dt>
                   <dd><code>true</code> if the shift (Shift) key modifier is activated.<br /></dd>
                   <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-repeat">repeat</a></code> of type <code>boolean</code>, readonly</dt>
-                  <dd><code>true</code> if the key has been pressed in a sustained manner.  Depending on the system configuration, holding down a key results may result in multiple consecutive <a href="#event-type-keydown">keydown</a> events,  <a href="#event-type-keypress">keypress</a> events, and <a href="#event-type-textInput">textInput</a> events, for appropriate keys.   For mobile devices which have <em>long-key-press</em> behavior, the first key event with a <a href="#events-Events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> shall serve as an indication of a <em>long-key-press</em>.  The length of time that the key must be pressed in order to begin repeating is configuration-dependent.</dd>
+                  <dd><code>true</code> if the key has been pressed in a sustained manner.  Depending on the system configuration, holding down a key results may result in multiple consecutive <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> events,  <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events, and <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> events, for appropriate keys.   For mobile devices which have <em>long-key-press</em> behavior, the first key event with a <a href="#events-Events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> shall serve as an indication of a <em>long-key-press</em>.  The length of time that the key must be pressed in order to begin repeating is configuration-dependent.</dd>
                 </dl>
               </dd>
               <dt>
@@ -3114,9 +3123,9 @@
               <a class="noxref" href="#event-type-keydown">keydown</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keydown</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
-  A key is pressed down. This event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>. This event should logically happen before the event <a href="#event-type-keyup">keyup</a> is produced. Whether a <a href="#event-type-keydown">keydown</a> contributes or not to the generation of a text event is implementation dependent.
-
-              <p class="note"><strong>Note:</strong> the <a href="#event-type-keydown">keydown</a> and <a href="#event-type-keyup">keyup</a> events are traditionally associated with detecting a physical key rather than a character value.</p></dd>
+               A user agent must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> event. This event type must be dispatched before the <a class="eventtype" href="#event-type-compositionstart"><code>keypress</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events event associated with the same key.  Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.
+
+              <p class="note"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events are traditionally associated with detecting a physical key rather than a character value.</p></dd>
           </dl>
         </div>
 
@@ -3126,9 +3135,9 @@
               <a class="noxref" href="#event-type-keypress">keypress</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keypress</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
-  A key is pressed down. This event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>. This event should logically happen before the event <a href="#event-type-keyup">keyup</a> is produced. Whether a <a href="#event-type-keypress">keypress</a> contributes or not to the generation of a text event is implementation dependent.
-
-              <p class="note"><strong>Note:</strong> the <a href="#event-type-keypress">keypress</a> event is traditionally associated with detecting a character value rather than a physical key, and may not be available on all keys in some configurations.</p><p class="warning"><strong>Warning:</strong> the <a href="#event-type-keypress">keypress</a> event type is defined in this specification for reference and completeness, but this specification <a href="#glossary-deprecated">deprecates</a> the use of this event type.</p></dd>
+               A user agent must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> event. This event type must be dispatched after the <a class="eventtype" href="#event-type-compositionstart"><code>keypress</code></a> event and before the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event associated with the same key.
+
+              <p class="note"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event is traditionally associated with detecting a character value rather than a physical key, and may not be available on all keys in some configurations.</p><p class="warning"><strong>Warning:</strong> the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event type is defined in this specification for reference and completeness, but this specification <a href="#glossary-deprecated">deprecates</a> the use of this event type.</p></dd>
           </dl>
         </div>
 
@@ -3138,9 +3147,9 @@
               <a class="noxref" href="#event-type-keyup">keyup</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keyup</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, and <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> are in use. <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, and <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a> are in use unless the <a class="noxref" href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> corresponds to the key modifier itself.</td></tr></table>
-              A key is released. This event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>. This event should logically happen after the event <a href="#event-type-keydown">keydown</a> shall be produced. Whether a keyup contributes or not to the generation of a text event is implementation dependent.
-
-              <p class="note"><strong>Note:</strong> the <a href="#event-type-keydown">keydown</a> and <a href="#event-type-keyup">keyup</a> events are traditionally associated with detecting a physical key rather than a character value.</p></dd>
+               A user agent must dispatch this event when a user agent must dispatch this event when a key is released. This event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a href="#glossary-ime">input method editor</a>. This event should logically happen after the event <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> shall be produced. Whether a keyup contributes or not to the generation of a text event is implementation dependent.
+
+              <p class="note"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events are traditionally associated with detecting a physical key rather than a character value.</p></dd>
           </dl>
         </div>
       </div>
@@ -3149,7 +3158,7 @@
         <h3 class="div3"><a id="events-compositionevents" href="#events-compositionevents">5.2.8 Composition Events Types</a></h3>
         <p>This module defines the feature CompositionEvents 3.0 and depends on the feature UIEvents 3.0.</p>
         <p>Composition Events provide a means for inputing text in a supplementary or alternate manner than by Keyboard Events, in order to allow the use of characters that may not be commonly available on keyboard. For examples, Composition events may be used to add accents to characters despite their absence from standard US keyboards, to build up logograms of many Asian languages from their base components or categories, to select word choices from a combination of key presses on a mobile device keyboard, or to convert voice commands into text using a speech recognition processor.  Refer to <a href="#keyset">Keyboard events and key identifiers</a> for examples on how Composition Events are used in combination with keyboard events.</p>
-        <p>Conceptually, a composition session consists of one <a href="#event-type-compositionstart">compositionstart</a> event, one or more <a href="#event-type-compositionupdate">compositionupdate</a> events, and one <a href="#event-type-compositionend">compositionend</a> event, with the value of the <a href="#events-Events-CompositionEvent-data">data</a> attribute persisting between each "stage" of this event chain during each session.</p>
+        <p>Conceptually, a composition session consists of one <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> event, one or more <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a> events, and one <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event, with the value of the <a href="#events-Events-CompositionEvent-data">data</a> attribute persisting between each "stage" of this event chain during each session.</p>
         <p>Not all IME systems or devices expose the necessary data to the DOM, so the active composition string (the "Reading Window" or "candidate selection menu option") may not be available through this interface, in which case the selection may be represented by the empty string.</p>
         <dl>
           <dt><strong>Interface <em><a id="events-Events-CompositionEvent">CompositionEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
@@ -3240,7 +3249,7 @@
               <a class="noxref" href="#event-type-compositionstart">compositionstart</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>compositionstart</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-CompositionEvent"><code>CompositionEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, and <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.</td></tr></table>
-              A <a href="#glossary-text-composition-system">text composition system</a> begins composing a passage of text.  This event type is device-dependent, and may rely upon the capabilities of the text conversion system and how it is mapped into the operating system.  When a keyboard is used to feed an input method editor, this event type is generated after a <code>keydown</code> event, but speech or handwriting recognition systems may send this event type without keyboard events.  Some implemenations may populate the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute of the <a href="#event-type-compositionstart">compositionstart</a> event with the text currently selected in the document (for editing and replacement); otherwise, the value of the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute shall be <code>null</code>.  (<span class="issue">@@ see <a href="http://lists.w3.org/Archives/Public/www-dom/2009JulSep/0143.html" title="Extra notes on composition events from Daniel Danilatos on 2009-08-07 (www-dom@w3.org from July to September 2009)">Extra notes on composition events</a> for more details.</span>)
+              A user agent must dispatch this event when a <a href="#glossary-text-composition-system">text composition system</a> begins composing a passage of text.  This event type is device-dependent, and may rely upon the capabilities of the text conversion system and how it is mapped into the operating system.  When a keyboard is used to feed an input method editor, this event type is generated after a <code>keydown</code> event, but speech or handwriting recognition systems may send this event type without keyboard events.  Some implemenations may populate the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute of the <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> event with the text currently selected in the document (for editing and replacement); otherwise, the value of the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute shall be <code>null</code>.  (<span class="issue">@@ see <a href="http://lists.w3.org/Archives/Public/www-dom/2009JulSep/0143.html" title="Extra notes on composition events from Daniel Danilatos on 2009-08-07 (www-dom@w3.org from July to September 2009)">Extra notes on composition events</a> for more details.</span>)
             </dd>
           </dl>
         </div>
@@ -3251,7 +3260,7 @@
               <a class="noxref" href="#event-type-compositionupdate">compositionupdate</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>compositionupdate</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-CompositionEvent"><code>CompositionEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, and <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.</td></tr></table>
-              A <a href="#glossary-text-composition-system">text composition system</a> updates its active text passage with a new character, which is added to the string in <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.  Note that some <a href="#glossary-text-composition-system">text composition systems</a> may not expose this information to the DOM, in which case this event will not fire during the composition process.  If the composition process is canceled, this event will be fired immediately before the <a class="noxref" href="#event-type-compositionend">compositionend</a> event, and the <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code> attribute will be set to <code>null</code><span class="issue">(@@ "null" or "empty string"? What's the distinction?)</span>.</a></dd>
+              A user agent must dispatch this event when a <a href="#glossary-text-composition-system">text composition system</a> updates its active text passage with a new character, which is added to the string in <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.  Note that some <a href="#glossary-text-composition-system">text composition systems</a> may not expose this information to the DOM, in which case this event will not fire during the composition process.  If the composition process is canceled, this event will be fired immediately before the <a class="noxref" href="#event-type-compositionend">compositionend</a> event, and the <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code> attribute will be set to <code>null</code><span class="issue">(@@ "null" or "empty string"? What's the distinction?)</span>.</a></dd>
           </dl>
         </div>
 
@@ -3261,8 +3270,9 @@
               <a class="noxref" href="#event-type-compositionend">compositionend</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>compositionend</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-CompositionEvent"><code>CompositionEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, and <a href="#events-Events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.</td></tr></table>
-              A <a href="#glossary-text-composition-system">text composition system</a> completes the composition of its active text passage, or cancels the composition process.  If the result of the <a href="#glossary-text-composition-system">text composition system</a> is not null and does not contain the empty string, this event type will be followed by a <a href="#event-type-textInput">textInput</a> event type with the appropriate <a href="#events-Events-TextEvent-inputMode">inputMode</a> value, such as <a href="#events-DOM_INPUT_METHOD_IME">DOM_INPUT_METHOD_IME</a>, <a href="#events-DOM_INPUT_METHOD_HANDWRITING">DOM_INPUT_METHOD_HANDWRITING</a>, <a href="#events-DOM_INPUT_METHOD_VOICE">DOM_INPUT_METHOD_VOICE</a>, or <a href="#events-DOM_INPUT_METHOD_MULTIMODAL">DOM_INPUT_METHOD_MULTIMODAL</a>.
-              <br /><br /><span class="issue">@@ original text: A <a href="#glossary-text-composition-system">text composition system</a> completes the composition of its active text passage.  This event type is similar to a TextInput event but is also sent when an input method cancels composing a text.</span></dd>
+              A user agent must dispatch this event when a <a href="#glossary-text-composition-system">text composition system</a> completes the composition of its active text passage, or cancels the composition process.  If the result of the <a href="#glossary-text-composition-system">text composition system</a> is not null and does not contain the empty string, this event type will be followed by a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event type with the appropriate <a href="#events-Events-TextEvent-inputMode">inputMode</a> value, such as <a href="#events-DOM_INPUT_METHOD_IME">DOM_INPUT_METHOD_IME</a>, <a href="#events-DOM_INPUT_METHOD_HANDWRITING">DOM_INPUT_METHOD_HANDWRITING</a>, <a href="#events-DOM_INPUT_METHOD_VOICE">DOM_INPUT_METHOD_VOICE</a>, or <a href="#events-DOM_INPUT_METHOD_MULTIMODAL">DOM_INPUT_METHOD_MULTIMODAL</a>.
+              <br />
+            </dd>
           </dl>
         </div>
         <div class="div3">
@@ -3374,15 +3384,15 @@
               <dd>
                 <dl>
                   <dt><code class="attribute-name"><a id="events-Events-MutationEvent-attrChange">attrChange</a></code> of type <code>unsigned short</code>, readonly</dt>
-                  <dd><code>attrChange</code> indicates the type of change which triggered the <a href="#event-type-DOMAttrModified">DOMAttrModified</a> event. The values can be <code>MODIFICATION</code>, <code>ADDITION</code>, or <code>REMOVAL</code>.<br /></dd>
+                  <dd><code>attrChange</code> indicates the type of change which triggered the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a> event. The values can be <code>MODIFICATION</code>, <code>ADDITION</code>, or <code>REMOVAL</code>.<br /></dd>
                   <dt><code class="attribute-name"><a id="events-Events-MutationEvent-attrName">attrName</a></code> of type <code>DOMString</code>, readonly</dt>
-                  <dd><code>attrName</code> indicates the name of the changed <code>Attr</code> node in a <a href="#event-type-DOMAttrModified">DOMAttrModified</a> event.<br /></dd>
+                  <dd><code>attrName</code> indicates the name of the changed <code>Attr</code> node in a <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a> event.<br /></dd>
                   <dt><code class="attribute-name"><a id="events-Events-MutationEvent-newValue">newValue</a></code> of type <code>DOMString</code>, readonly</dt>
-                  <dd><code>newValue</code> indicates the new value of the <code>Attr</code> node in <a href="#event-type-DOMAttrModified">DOMAttrModified</a> events, and of the <code>CharacterData</code> node in <a href="#event-type-DOMCharacterDataModified">DOMCharacterDataModified</a> events.<br /></dd>
+                  <dd><code>newValue</code> indicates the new value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a> events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a> events.<br /></dd>
                   <dt><code class="attribute-name"><a id="events-Events-MutationEvent-prevValue">prevValue</a></code> of type <code>DOMString</code>, readonly</dt>
-                  <dd><code>prevValue</code> indicates the previous value of the <code>Attr</code> node in <a href="#event-type-DOMAttrModified">DOMAttrModified</a> events, and of the <code>CharacterData</code> node in <a href="#event-type-DOMCharacterDataModified">DOMCharacterDataModified</a> events.<br /></dd>
+                  <dd><code>prevValue</code> indicates the previous value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a> events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a> events.<br /></dd>
                   <dt><code class="attribute-name"><a id="events-Events-MutationEvent-relatedNode">relatedNode</a></code> of type <code>Node</code>, readonly</dt>
-                  <dd><code>relatedNode</code> shall be used to identify a secondary node related to a mutation event. For example, if a mutation event is dispatched to a node indicating that its parent has changed, the <code>relatedNode</code> shall be the changed parent. If an event is instead dispatched to a subtree indicating a node was changed within it, the <code>relatedNode</code> shall be the changed node. In the case of the <a href="#event-type-DOMAttrModified">DOMAttrModified</a> event it indicates the <code>Attr</code> node which was modified, added, or removed.<br /></dd>
+                  <dd><code>relatedNode</code> shall be used to identify a secondary node related to a mutation event. For example, if a mutation event is dispatched to a node indicating that its parent has changed, the <code>relatedNode</code> shall be the changed parent. If an event is instead dispatched to a subtree indicating a node was changed within it, the <code>relatedNode</code> shall be the changed node. In the case of the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a> event it indicates the <code>Attr</code> node which was modified, added, or removed.<br /></dd>
                 </dl>
               </dd>
               <dt>
@@ -3437,7 +3447,7 @@
               <a class="noxref" href="#event-type-DOMNodeInserted">DOMNodeInserted</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMNodeInserted</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a> holds the parent node of the node that has been inserted or, in case of <code>Attr</code> nodes, the <code>ownerElement</code> of the <code>Attr</code> node.</td></tr></table>
-    A node has been added as a child of another node or, in case of <code>Attr</code> nodes, has been added to an <code>Element</code>. This event shall be dispatched after the insertion has taken place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being inserted.</dd>
+              A user agent must dispatch this event when a node has been added as a child of another node or, in case of <code>Attr</code> nodes, has been added to an <code>Element</code>. This event shall be dispatched after the insertion has taken place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being inserted.</dd>
           </dl>
         </div>
 
@@ -3447,7 +3457,7 @@
               <a class="noxref" href="#event-type-DOMNodeRemoved">DOMNodeRemoved</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMNodeRemoved</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a> holds the parent node of the node being removed or, in case of <code>Attr</code> nodes, the <code>ownerElement</code> of the <code>Attr</code> node.</td></tr></table>
-    A node is being removed from its parent node or, in case of <code>Attr</code> nodes, removed from its <code>ownerElement</code>. This event shall be dispatched before the removal takes place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being removed.</dd>
+              A user agent must dispatch this event when a node is being removed from its parent node or, in case of <code>Attr</code> nodes, removed from its <code>ownerElement</code>. This event shall be dispatched before the removal takes place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being removed.</dd>
           </dl>
         </div>
 
@@ -3457,7 +3467,7 @@
               <a class="noxref" href="#event-type-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMNodeRemovedFromDocument</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr><tr class="assert must"><th>Context info</th><td>None</td></tr></table>
-    A node is being removed from a document, either through direct removal of the node or removal of a subtree in which it is contained; <code>Attr</code> nodes are considered part of an <code>Element</code>'s subtree. This event shall be dispatched before the removal takes place. The <a href="#glossary-target-node">target node</a> of this event type shall be the node being removed. If the node is being directly removed, the event type <a href="#event-type-DOMNodeRemoved">DOMNodeRemoved</a> must occur before this event type.</dd>
+              A user agent must dispatch this event when a node is being removed from a document, either through direct removal of the node or removal of a subtree in which it is contained; <code>Attr</code> nodes are considered part of an <code>Element</code>'s subtree. This event shall be dispatched before the removal takes place. The <a href="#glossary-target-node">target node</a> of this event type shall be the node being removed. If the node is being directly removed, the event type <a class="eventtype" href="#event-type-DOMNodeRemoved"><code>DOMNodeRemoved</code></a> must occur before this event type.</dd>
           </dl>
         </div>
 
@@ -3467,7 +3477,7 @@
               <a class="noxref" href="#event-type-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMNodeInsertedIntoDocument</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>No</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr><tr class="assert must"><th>Context info</th><td>None</td></tr></table>
-    A node has been inserted into a document, either through direct insertion of the node or insertion of a subtree in which it is contained; <code>Attr</code> nodes are considered part of an <code>Element</code>'s subtree. This event shall be dispatched after the insertion has taken place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being inserted. If the node is being directly inserted, the event type <a href="#event-type-DOMNodeInserted">DOMNodeInserted</a> must occur before this event type.</dd>
+              A user agent must dispatch this event when a node has been inserted into a document, either through direct insertion of the node or insertion of a subtree in which it is contained; <code>Attr</code> nodes are considered part of an <code>Element</code>'s subtree. This event shall be dispatched after the insertion has taken place. The <a href="#glossary-target-node">target node</a> of this event shall be the node being inserted. If the node is being directly inserted, the event type <a class="eventtype" href="#event-type-DOMNodeInserted"><code>DOMNodeInserted</code></a> must occur before this event type.</dd>
           </dl>
         </div>
 
@@ -3477,7 +3487,7 @@
               <a class="noxref" href="#event-type-DOMAttrModified">DOMAttrModified</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMAttrModified</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationEvent-attrName"><code>MutationEvent.attrName</code></a> and <a href="#events-Events-MutationEvent-attrChange"><code>MutationEvent.attrChange</code></a> are in use. The value of <a href="#events-Events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a> indicates the <code>Attr</code> node that has been modified, added, or removed. If the <code>Attr</code> node has been added, <a href="#events-Events-MutationEvent-newValue"><code>MutationEvent.newValue</code></a> shall be in use. If the <code>Attr</code> node has been removed, <a href="#events-Events-MutationEvent-prevValue"><code>MutationEvent.prevValue</code></a> shall be in use. If the <code>Attr</code> node has been modified, <a class="noxref" href="#events-Events-MutationEvent-newValue"><code>MutationEvent.newValue</code></a> and <a class="noxref" href="#events-Events-MutationEvent-prevValue"><code>MutationEvent.prevValue</code></a> are in use.</td></tr></table>
-    Occurs after <code>Attr.value</code> has been modified and after an <code>Attr</code> node has been added to or removed from an <code>Element</code>. The <a href="#glossary-target-node">target node</a> of this event shall be the <code>Element</code> node where the change occurred. It is implementation dependent whether this event type occurs when the children of the <code>Attr</code> node are changed in ways that do not affect the value of <code>Attr.value</code>.</dd>
+              A user agent must dispatch this event after an <code>Attr.value</code> has been modified and after an <code>Attr</code> node has been added to or removed from an <code>Element</code>. The <a href="#glossary-target-node">target node</a> of this event shall be the <code>Element</code> node where the change occurred. It is implementation dependent whether this event type occurs when the children of the <code>Attr</code> node are changed in ways that do not affect the value of <code>Attr.value</code>.</dd>
           </dl>
         </div>
 
@@ -3487,7 +3497,7 @@
               <a class="noxref" href="#event-type-DOMCharacterDataModified">DOMCharacterDataModified</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMCharacterDataModified</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationEvent"><code>MutationEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>ProcessingInstruction</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationEvent-prevValue"><code>MutationEvent.prevValue</code></a>, and <a href="#events-Events-MutationEvent-newValue"><code>MutationEvent.newValue</code></a> are in use.</td></tr></table>
-    Occurs after <code>CharacterData.data</code> or <code>ProcessingInstruction.data</code> have been modified but the node itself has not been inserted or deleted. The <a href="#glossary-target-node">target node</a> of this event shall be the <code>CharacterData</code> node or the <code>ProcessingInstruction</code> node.</dd>
+              A user agent must dispatch this event after <code>CharacterData.data</code> or <code>ProcessingInstruction.data</code> have been modified, but the node itself has not been inserted or deleted.  The <a href="#glossary-target-node">target node</a> of this event shall be the <code>CharacterData</code> node or the <code>ProcessingInstruction</code> node.</dd>
           </dl>
         </div>
       </div>
@@ -3582,7 +3592,7 @@
               <a class="noxref" href="#event-type-DOMElementNameChanged">DOMElementNameChanged</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMElementNameChanged</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationNameEvent"><code>MutationNameEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationNameEvent-prevNamespaceURI"><code>MutationNameEvent.prevNamespaceURI</code></a>, and <a href="#events-Events-MutationNameEvent-prevNodeName"><code>MutationNameEvent.prevNodeName</code></a> are in use.</td></tr></table>
-    Occurs after the <code>namespaceURI</code> and/or the <code>nodeName</code> of an <code>Element</code> node have been modified (e.g., the element was renamed using <code>Document.renameNode()</code>). The <a href="#glossary-target-node">target node</a> of this event shall be the renamed <code>Element</code> node.</dd>
+              A user agent must dispatch this event after the <code>namespaceURI</code> and/or the <code>nodeName</code> of an <code>Element</code> node have been modified (e.g., the element was renamed using <code>Document.renameNode()</code>). The <a href="#glossary-target-node">target node</a> of this event shall be the renamed <code>Element</code> node.</dd>
           </dl>
         </div>
 
@@ -3592,7 +3602,7 @@
               <a class="noxref" href="#event-type-DOMAttributeNameChanged">DOMAttributeNameChanged</a>
             </dt>
             <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>DOMAttributeNameChanged</code></strong></td></tr><tr class="assert must"><th>Namespace</th><td><code>None</code></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-MutationNameEvent"><code>MutationNameEvent</code></a></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Context info</th><td><a href="#events-Events-MutationNameEvent-prevNamespaceURI"><code>MutationNameEvent.prevNamespaceURI</code></a>, and <a href="#events-Events-MutationNameEvent-prevNodeName"><code>MutationNameEvent.prevNodeName</code></a> are in use. The value of <a href="#events-Events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a> contains the renamed <code>Attr</code> node.</td></tr></table>
-    Occurs after the <code>namespaceURI</code> and/or the <code>nodeName</code> of a <code>Attr</code> node have been modified (e.g., the attribute was renamed using <code>Document.renameNode()</code>). The <a href="#glossary-target-node">target node</a> of this event shall be the <code>Element</code> node whose <code>Attr</code> has been renamed.</dd>
+              A user agent must dispatch this event after the <code>namespaceURI</code> and/or the <code>nodeName</code> of a <code>Attr</code> node have been modified (e.g., the attribute was renamed using <code>Document.renameNode()</code>). The <a href="#glossary-target-node">target node</a> of this event shall be the <code>Element</code> node whose <code>Attr</code> has been renamed.</dd>
           </dl>
         </div>
       </div>
@@ -3743,7 +3753,7 @@
             <p class="note"><strong>Note:</strong> The order between the text event and keyboard events may differ depending on the keyboard devices.</p>
             <div class="div3">
               <h4 class="adiv3"><a id="keyset-Modifiers" href="#keyset-Modifiers">6.2.1 Modifier keys</a></h4>
-              <p>Keyboard input uses modifier keys to change the normal behavior of a key. Keys associated with modifiers generate, like other keys, <a href="#event-type-keydown">keydown</a> and <a href="#event-type-keyup">keyup</a> events as shown in the example below. Some modifiers are activated while the key is being pressed down or maintained pressed such as <code class="value">'Alt'</code>, <code class="value">'Control'</code>, <code class="value">'Shift'</code>, <code class="value">'AltGraph'</code>, or <code class="value">'Meta'</code>. Others modifiers are activated depending on their state such as <code class="value">'CapsLock'</code>, <code class="value">'NumLock'</code>, or <code class="value">'Scroll'</code>. Change in the state happens when the modifier key is being pressed down. The <a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a> interface provides convenient attributes for some common modifiers keys: <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. Some operating systems simulate the <code class="value">'AltGraph'</code> modifier key with the combination of the <code>"Alt</code> and <code class="value">'Control'</code> modifier keys. Implementations are encouraged to use the <code class="value">'AltGraph'</code> modifier key.</p>
+              <p>Keyboard input uses modifier keys to change the normal behavior of a key. Keys associated with modifiers generate, like other keys, <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events as shown in the example below. Some modifiers are activated while the key is being pressed down or maintained pressed such as <code class="value">'Alt'</code>, <code class="value">'Control'</code>, <code class="value">'Shift'</code>, <code class="value">'AltGraph'</code>, or <code class="value">'Meta'</code>. Others modifiers are activated depending on their state such as <code class="value">'CapsLock'</code>, <code class="value">'NumLock'</code>, or <code class="value">'Scroll'</code>. Change in the state happens when the modifier key is being pressed down. The <a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a> interface provides convenient attributes for some common modifiers keys: <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. Some operating systems simulate the <code class="value">'AltGraph'</code> modifier key with the combination of the <code>"Alt</code> and <code class="value">'Control'</code> modifier keys. Implementations are encouraged to use the <code class="value">'AltGraph'</code> modifier key.</p>
               <p>The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
               <ol>
                 <li><code>"keydown"</code>: <code class="value">'Shift'</code>, shiftKey</li>
@@ -3799,7 +3809,7 @@
             <div class="div3">
               <h4 class="adiv3"><a id="keyset-IME" href="#keyset-IME">6.2.3 Input Method Editors</a></h4>
 
-              <p>This specification includes a model for <a href="#glossary-ime">input method editors (IMEs)</a>, through the <a href="#events-compositionevents">CompositionEvent</a> interface and events.  However, composition events and keyboard events do not necessarily map as a one-to-one relationship.  As an example, receiving a <a href="#event-type-keydown">keydown</a> for the "Accept" key identifier does not necessarily imply that the text currently selected in the IME is being accepted, but indicates only that a keystroke happened, disconnected from the IME Accept functionality (which would normally result in a <code>"compositionend"</code> event in most IME systems).  Keyboard events cannot be used to determine the current state of the input method editor, which should be obtained through the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute of the <a href="#events-compositionevents">CompositionEvent</a> interface.  Additionally, IME systems and devices vary in their functionality, and in which keys are used for activating that functionality, such that the <code class="value">'Convert'</code> and <code class="value">'Accept'</code> keys may be represented by other available keys.</p>  
+              <p>This specification includes a model for <a href="#glossary-ime">input method editors (IMEs)</a>, through the <a href="#events-compositionevents">CompositionEvent</a> interface and events.  However, composition events and keyboard events do not necessarily map as a one-to-one relationship.  As an example, receiving a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> for the "Accept" key identifier does not necessarily imply that the text currently selected in the IME is being accepted, but indicates only that a keystroke happened, disconnected from the IME Accept functionality (which would normally result in a <code>"compositionend"</code> event in most IME systems).  Keyboard events cannot be used to determine the current state of the input method editor, which should be obtained through the <a href="#events-Events-CompositionEvent-data"><code>data</code></a> attribute of the <a href="#events-compositionevents">CompositionEvent</a> interface.  Additionally, IME systems and devices vary in their functionality, and in which keys are used for activating that functionality, such that the <code class="value">'Convert'</code> and <code class="value">'Accept'</code> keys may be represented by other available keys.</p>  
               <p>Keyboard events correspond to the events generated by the input device after the keyboard layout mapping but before the processing of the input method editor.</p>
               <p>The following example describes a possible sequence of keys to generate the Unicode character &#24066; (Kanji character, part of CJK Unified Ideographs) using Japanese input methods. This example assumes that the input method editor is activated and in the Japanese-Romaji input mode. The keys <code class="value">'Convert'</code> and <code class="value">'Accept'</code> may be replaced by others depending on the input device in use and the configuration of the IME, e.g. it could be respectively <code class="value">'U+0020'</code> (Space key) and <code class="value">'Enter'</code>.</p>
               <ol>
@@ -3854,10 +3864,10 @@
             <!-- div3 IME -->
             <div class="div3">
               <h4 class="adiv3"><a id="keyset-cancelable_keys" href="#keyset-cancelable_keys">6.2.4 Default actions and cancelable keyboard events</a></h4>
-              <p>Canceling the <a href="#glossary-default-action">default action</a> of a <a href="#event-type-keydown">keydown</a> event does not affect its respective <a href="#event-type-keyup">keyup</a> event; it must however prevent the respective <a href="#event-type-textInput">textInput</a> event from being generated. The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
+              <p>Canceling the <a href="#glossary-default-action">default action</a> of a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event does not affect its respective <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event; it must however prevent the respective <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event from being generated. The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
               <ol>
                 <li><code>"keydown"</code>: <code class="value">'U+0051'</code> (Latin Capital Letter Q key), shiftKey<br/>
-    the <a href="#glossary-default-action">default action</a> of the <a href="#event-type-keydown">keydown</a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object.</li>
+    the <a href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object.</li>
                 <li>No <code>"textInput"</code> shall be generated.</li>
                 <li><code>"keyup"</code>: <code class="value">'U+0051'</code>, shiftKey</li>
               </ol>
@@ -3870,7 +3880,7 @@
                 <li><code>"keyup"</code>: <code class="value">'U+0051'</code>, shiftKey</li>
                 <li><code>"keyup"</code>: <code class="value">'Shift'</code></li>
               </ol>
-              <p>If the key is part of a sequence of several keystrokes, whether it is a dead key or it is contributing to an Input Method Editor sequence, the keystroke shall be ignored (not taken into account) only if the <a href="#glossary-default-action">default action</a> is canceled on the <a href="#event-type-keydown">keydown</a> event. Canceling a dead key on a <a href="#event-type-keyup">keyup</a> event has not effect on <a href="#event-type-textInput">textInput</a> events. The following example uses the keystrokes <code class="value">'U+0302'</code> (Combining Circumflex Accent key) and <code class="value">'U+0045'</code> (Latin Capital Letter E key) (on a PC/AT french keyboard using a french mapping and without any modifier activated):</p>
+              <p>If the key is part of a sequence of several keystrokes, whether it is a dead key or it is contributing to an Input Method Editor sequence, the keystroke shall be ignored (not taken into account) only if the <a href="#glossary-default-action">default action</a> is canceled on the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event. Canceling a dead key on a <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event has not effect on <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> events. The following example uses the keystrokes <code class="value">'U+0302'</code> (Combining Circumflex Accent key) and <code class="value">'U+0045'</code> (Latin Capital Letter E key) (on a PC/AT french keyboard using a french mapping and without any modifier activated):</p>
               <ol>
                 <li><code>"keydown"</code>: <code class="value">'U+0302'</code> (Combining Circumflex Accent key)<br/>
     the <a href="#glossary-default-action">default action</a> of the keydown event shall be prevented</li>