added new FocusEvent interface with relatedTarget, moved focus events there, then moved Basic Events to UIEvents cuz DOMActivate was lonely, removed Basic Events category
authorschepers
Tue, 22 Sep 2009 15:52:59 +0900
changeset 208 e96667f78221
parent 207 81658547826e
child 209 c63ec78e9872
added new FocusEvent interface with relatedTarget, moved focus events there, then moved Basic Events to UIEvents cuz DOMActivate was lonely, removed Basic Events category
html/DOM3-Events.html
--- a/html/DOM3-Events.html	Tue Sep 22 11:38:39 2009 +0900
+++ b/html/DOM3-Events.html	Tue Sep 22 15:52:59 2009 +0900
@@ -186,11 +186,11 @@
       </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">21 September 2009</span></h2>
+      <h2 id="Overview-W3C-doctype">W3C Editor's Draft <span class="date">22 September 2009</span></h2>
       <dl>
         <dt>This version:</dt>
         <dd>
-          <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.93">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.93</a>
+          <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.94">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.94</a>
         </dd>
         <dt>Latest stable version:</dt>
         <dd>
@@ -198,7 +198,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.92">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.92</a>
+          <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.93">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.93</a>
         </dd>
         <dt>Editor's Draft:</dt>
         <dd>
@@ -236,7 +236,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">21 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">22 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
@@ -339,20 +339,7 @@
               <li>
                 <a href="#events-uievents">5.2.1 User Interface Event Types</a>
                 <ul class="toc">
-                  <li><a href="#events-uievent-event-order">5.2.1.1 User Interface Event Order</a></li>
-                  <li><a href="#events-uievent-doc-focus">5.2.1.2 Document Focus and Focus Context</a></li>
-                  <li><a class="eventtype" href="#event-type-blur"><code>blur</code> event</a></li>
                   <li><a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code> event</a></li>
-                  <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code> event</a></li>
-                  <li><a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code> event</a></li>
-                  <li><a class="eventtype" href="#event-type-focus"><code>focus</code> event</a></li>
-                  <li><a class="eventtype" href="#event-type-focusin"><code>focusin</code> event</a></li>
-                  <li><a class="eventtype" href="#event-type-focusout"><code>focusout</code> event</a></li>
-                </ul>
-              </li>
-              <li>
-                <a href="#events-basicevents">5.2.2 Basic Event Types</a>
-                <ul class="toc">
                   <li><a class="eventtype" href="#event-type-load"><code>load</code> event</a></li>
                   <li><a class="eventtype" href="#event-type-unload"><code>unload</code> event</a></li>
                   <li><a class="eventtype" href="#event-type-abort"><code>abort</code> event</a></li>
@@ -366,6 +353,19 @@
                 </ul>
               </li>
               <li>
+                <a href="#events-basicevents">5.2.2 Focus Event Types</a>
+                <ul class="toc">
+                  <li><a href="#events-uievent-event-order">5.2.1.1 User Interface Event Order</a></li>
+                  <li><a href="#events-uievent-doc-focus">5.2.1.2 Document Focus and Focus Context</a></li>
+                  <li><a class="eventtype" href="#event-type-blur"><code>blur</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-focus"><code>focus</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-focusin"><code>focusin</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-focusout"><code>focusout</code> event</a></li>
+                </ul>
+              </li>
+              <li>
                 <a href="#events-mouseevents">5.2.3 Mouse Event Types</a>
                 <ul class="toc">
                   <li><a href="#events-mouse-event-order">5.2.7.1 Mouse Event Order</a></li>
@@ -684,7 +684,7 @@
           <dd>The object to which an <a class="def" href="#glossary-event">event</a> is targeted.</dd>
 
           <dt id="glossary-event-type">event type</dt>
-          <dd>An <a class="def" href="#glossary-event">event</a> object which defines particular trigger conditions, properties, interfaces, and other characteristics which distinguish it from other event types.  For example, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has different characteristics than the <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a> or <a class="eventtype" href="#event-type-load"><code>load</code></a> event types. The event type is exposed as the <a href="#events-event-type-type"><code class="interface-attribute">type</code></a> attribute on the event object.  See <a href="#event-types">event types</a> for more details.  Also loosely referred to as 'event', such as the <em><a class="eventtype" href="#event-type-click"><code>click</code></a> event</em>.</dd>
+          <dd>An <a class="def" href="#glossary-event">event</a> object which defines particular trigger conditions, attributes, interfaces, and other characteristics which distinguish it from other event types.  For example, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has different characteristics than the <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a> or <a class="eventtype" href="#event-type-load"><code>load</code></a> event types. The event type is exposed as the <a href="#events-event-type-type"><code class="interface-attribute">type</code></a> attribute on the event object.  See <a href="#event-types">event types</a> for more details.  Also loosely referred to as 'event', such as the <em><a class="eventtype" href="#event-type-click"><code>click</code></a> event</em>.</dd>
           
           <dt id="glossary-event-focus">focus</dt>
           <dd>Focus is a special state of receptivity and concentration on an particular element or other <a class="def" href="#glossary-event-target">event target</a> within a document.  Each element has different behavior when focused, depending on its functionality, such as priming the element for activation (as for a button or hyperlink) or toggling state (as for a checkbox), receiving text input (as for a text form field), or copying selected text.  For more details, see <a href="#events-uievent-doc-focus">Document Focus and Focus Context</a>.</dd>
@@ -1622,8 +1622,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -1826,8 +1826,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -1842,8 +1842,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -1944,8 +1944,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -1960,8 +1960,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -1976,8 +1976,8 @@
               <code>Element</code>
             </td>
             <td>
-              <a href="#events-Events-UIEvent">
-                <code>UIEvent</code>
+              <a href="#events-Events-FocusEvent">
+                <code>FocusEvent</code>
               </a>
             </td>
             <td>No</td>
@@ -2307,7 +2307,8 @@
       <div class="div3">
         <h3 class="div3"><a id="events-uievents" href="#events-uievents">5.2.1 User Interface Event Types</a></h3>
         <p>This module defines the feature UIEvents 3.0 and depends on the features Events 3.0 and Views 2.0.</p>
-        <p>The User Interface event module contains basic event types associated with user interfaces.</p>
+        <p>The User Interface event module contains basic event types associated with user interfaces and document manipulation.</p>
+
         <dl>
           <dt><strong>Interface <em><a id="events-Events-UIEvent">UIEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
           <dd>
@@ -2389,37 +2390,7 @@
             </dl>
           </dd>
         </dl>
-        <p>The User Interface event types are listed below.</p>
-
-        <h4 class="div3 needswork"><a id="events-uievent-event-order" href="#events-uievent-event-order">5.2.1.1 User Interface Event Order</a></h4>
-        <p>Certain user interface events defined in this specification occur in a set order relative to one another.  The following is the typical sequence of events when a focus is shifted between elements (this order assumes that no element is initially focused):</p>
-        <ol>
-          <li><em>[user shifts focus]</em> <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a> (before first target element receives focus)</li>
-          <li><a class="eventtype" href="#event-type-focus"><code>focus</code></a> (after first target element receives focus)</li>
-          <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> (if supported)</li>
-          <li><em>[user shifts focus]</em> <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a> (before first target element loses focus)</li>
-          <li><a class="eventtype" href="#event-type-focusin"><code>focusin</code></a> (before second target element receives focus)</li>
-          <li><a class="eventtype" href="#event-type-blur"><code>blur</code></a> (after first target element loses focus)</li>
-          <li><a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a> (if supported)</li>
-          <li><a class="eventtype" href="#event-type-focus"><code>focus</code></a> (after second target element receives focus)</li>
-          <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> (if supported)</li>
-        </ol>
-        
-        <h4 class="div3 needswork"><a id="events-uievent-doc-focus" href="#events-uievent-doc-focus">5.2.1.2 Document Focus and Focus Context</a></h4>
-        <p>This event module includes event types for notification of changes in document <a class="def" href="#glossary-event-focus">focus</a>.  Depending on the environment, document focus may be distinct from user agent focus and operating system focus; this is referred to as focus context.  For example, in a typical desktop browser environment, the operating system context focus may be on one of many different applications, one of which is the browser; when the browser has focus, the user may shift  the application context focus (such as with the tab key) among different browser user interface fields (e.g. the Web site location bar, a search field, etc.) before or after achieving document focus; once the document itself has focus, sequential shifting of focus will step through the focusable elements in the document.  The event types defined in this specification deal exclusively with document focus, and the <a class="def" href="#glossary-event-target">event target</a> identified in the event details must only be part of the document or documents in the window, never a part of the browser or operating system, even when switching from one focus context to another.</p>
-        <p>Normally, a document always has a focused element, even if it is the document element itself, and a persistent <a class="def" href="#glossary-event-focus-ring">focus ring</a>; when switching between focus contexts, the document's currently focused element and focus ring normally remain the their current state; for example, if a document has three focusable elements, with the second element focused, when a user changes operating system focus to another application and then back to the browser, the second element will still be focused within the document, and tabbing will change the focus to the third element.  A <a class="def" href="#glossary-host-language">host language</a> may define specific elements which may or may not receive focus, the conditions user which an element may receive focus, the means by which focus may be changed, and the order in which the focus changes.  For example, in some cases an element may be given focus by moving a pointer over it, while other circumstances may require a mouse click; some elements may not be focusable at all, and some may be focusable only by special means (clicking on the element), but not by tabbing to it.  Documents may contain multiple focus rings.  Other specifications may define a more complex focus model than is described in this specification, including allowing multiple elements to have the current focus.</p>
-
-<!-- blur -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-blur">
-              <a class="eventtype noxref" href="#event-type-blur"><code>blur</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> properties is the <a class="def" href="#glossary-event-target">event target</a> losing focus.</td></tr></table>
-    A user agent must dispatch this event when an <a class="def" 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 is similar to <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>, but is dispatched after focus is shifted, and does not bubble.
-            </dd>
-          </dl>
-        </div>
+        <p>The User Interface event types are listed below.  Some of these events use the <a href="#events-Events-UIEvent"><code>UIEvent</code></a> interface if generated from a user interface, but the <a href="#events-Events-Event"><code>Event</code></a> interface otherwise, as detailed in each event.</p>
 
 <!-- DOMActivate -->
         <div class="event-definition assert must">
@@ -2432,76 +2403,6 @@
           </dl>
         </div>
 
-<!-- DOMFocusIn -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-DOMFocusIn">
-              <a class="eventtype noxref" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> properties is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
-              A user agent must dispatch this event when an <a class="def" 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>.
-              <p class="warning"><strong>Warning:</strong> the <a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the related event types <a class="eventtype" href="#event-type-focus"><code>focus</code></a> and <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>.</p>
-            </dd>
-          </dl>
-        </div>
-
-<!-- DOMFocusOut -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-DOMFocusOut">
-              <a class="eventtype noxref" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> properties is the <a class="def" href="#glossary-event-target">event target</a> losing focus.</td></tr></table>
-    A user agent must dispatch this event when an <a class="def" 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>.
-    <p class="warning"><strong>Warning:</strong> the <a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the related event types <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>.</p>
-            </dd>
-          </dl>
-        </div>
-
-<!-- focus -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-focus">
-              <a class="eventtype noxref" href="#event-type-focus"><code>focus</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> properties is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
-    A user agent must dispatch this event when an <a class="def" 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 is similar to <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>, but is dispatched after focus is shifted, and does not bubble..
-            </dd>
-          </dl>
-        </div>
-
-<!-- focusin -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-focusin">
-              <a class="eventtype noxref" href="#event-type-focusIn"><code>focusin</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> attribute is is the <a class="def" href="#glossary-event-target">event target</a> receiving focus, and the value of the <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> attribute is the <a class="def" href="#glossary-event-target">event target</a> losing focus (if any).</td></tr></table>
-              A user agent must dispatch this event when an <a class="def" href="#glossary-event-target">event target</a> is about to receive focus. This event type must be dispatched before the element is given focus.  The <a class="def" href="#glossary-event-target">event target</a> must be the element which is about to receive focus.  This event type is similar to <a class="eventtype" href="#event-type-focus"><code>focus</code></a>, but is dispatched before focus is shifted, and does bubble..
-              <p class="note"><strong>Note:</strong> When using this event type, the author may use the event's <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> attribute (or a host-language-specific method or means) to get the currently focused element before the focus shifts to the next focus <a class="def" href="#glossary-event-target">event target</a>, thus having optional access to both the element losing focus and the element gaining focus without the use of the <a class="eventtype" href="#event-type-blur"><code>blur</code></a> or <a class="eventtype" href="#event-type-focusout">focusout</a> event types.</p>
-            </dd>
-          </dl>
-        </div>
-
-<!-- focusout -->
-        <div class="event-definition assert must">
-          <dl>
-            <dt id="event-type-focusout">
-              <a class="eventtype noxref" href="#event-type-focusOut"><code>focusout</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a id="events-event-type-target">Event.target</a></code> attribute is is the <a class="def" href="#glossary-event-target">event target</a> losing focus, and the value of the <code class="attribute-name"><a id="events-event-type-currentTarget">Event.currentTarget</a></code> attribute is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
-              A user agent must dispatch this event when an <a class="def" href="#glossary-event-target">event target</a> is about to lose focus. This event type must be dispatched before the element loses focus.  The <a class="def" href="#glossary-event-target">event target</a> must be the element which is about to lose focus.  This event type is similar to <a class="eventtype" href="#event-type-blur"><code>blur</code></a>, but is dispatched before focus is shifted, and does bubble..
-            </dd>
-          </dl>
-        </div>
-      </div>
-      
-      
-<!-- div3 events-basicevents -->
-      <div class="div3">
-        <h3 class="div3"><a id="events-basicevents" href="#events-basicevents">5.2.2 Basic Event Types</a></h3>
-        <p>This event module contains basic event types associated with document manipulation. It defines the feature BasicEvents 3.0 and depends on the feature Events 3.0. The basic event types are listed below.</p>
-
 <!-- load -->
         <div class="event-definition assert must">
           <dl>
@@ -2509,13 +2410,13 @@
               <a class="eventtype noxref" href="#event-type-load"><code>load</code></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>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>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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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.  This event differs from the <a class="eventtype" href="#event-type-DOMContentLoaded"><code>DOMContentLoaded</code></a> event in that it is not dispatched until all external resources are loaded. 
+              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.  This event differs from the <a class="eventtype" href="#event-type-DOMContentLoaded"><code>DOMContentLoaded</code></a> event in that it is not dispatched until all external resources are loaded. 
             </dd>
           </dl>
         </div>
 
 <!-- DOMContentLoaded -->
-        <div class="event-definition assert must">
+        <!-- <div class="event-definition assert must">
           <dl>
             <dt id="event-type-DOMContentLoaded">
               <a class="eventtype noxref" href="#event-type-DOMContentLoaded"><code>DOMContentLoaded</code></a>
@@ -2525,7 +2426,7 @@
             </dd>
           </dl>
         </div>
-
+ -->
         
 <!-- unload -->
         <div class="event-definition assert must">
@@ -2534,7 +2435,7 @@
               <a class="eventtype noxref" href="#event-type-unload"><code>unload</code></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>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>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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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>
+              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>
         
@@ -2545,7 +2446,7 @@
               <a class="eventtype noxref" href="#event-type-abort"><code>abort</code></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>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>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 agent must dispatch this event when the 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>
         
@@ -2556,7 +2457,7 @@
               <a class="eventtype noxref" href="#event-type-error"><code>error</code></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>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>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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>
+              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>
         
@@ -2580,7 +2481,7 @@
               <a class="eventtype noxref" href="#event-type-change"><code>change</code></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>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>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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>
+              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>
 
@@ -2591,7 +2492,7 @@
               <a class="eventtype noxref" href="#event-type-submit"><code>submit</code></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>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>Bubbles</th><td>Yes</td></tr><tr class="assert must"><th>Target</th><td><code>Element</code></td></tr><tr class="assert must"><th>Cancelable</th><td>Yes</td></tr><tr class="assert must"><th>Default action</th><td>form data and HTTP request sent to server</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 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.  This event must be dispatched immediately before the form data and HTTP request is sent to the server.  If this event is canceled, the form data and HTTP request must not be sent to the server.
+              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.  This event must be dispatched immediately before the form data and HTTP request is sent to the server.  If this event is canceled, the form data and HTTP request must not be sent to the server.
               <p class="note"><strong>Note:</strong> The actual behavior for form data and HTTP request submission is host-language dependent.  Typically, canceling a <a class="eventtype" href="#event-type-submit"><code>submit</code></a> event will prevent user agent from navigating away from the current page.</p>
             </dd>
           </dl>
@@ -2617,7 +2518,7 @@
               <a class="eventtype noxref" href="#event-type-resize"><code>resize</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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>
+              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>
 
@@ -2628,16 +2529,236 @@
               <a class="eventtype noxref" href="#event-type-scroll"><code>scroll</code></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>Interface</th><td><a href="#events-Events-UIEvent"><code>UIEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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 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>
+              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>
 <!-- div3 Events-eventgroupings-basicevents -->
     </div>
-    
+<!-- div3 Events-KeyboardEvents-Interfaces -->
+
+
+
+    <!-- interface events-focusevents -->
+    <div class="div3">
+      <h3 class="div3"><a id="events-focusevents" href="#events-focusevents">5.2.2 Focus Event Types</a></h3>
+      <p>This module defines the feature FocusEvents 3.0 and depends on the feature UIEvents 3.0.</p>
+
+      <dl>
+        <dt><strong>Interface <em><a id="events-Events-FocusEvent">FocusEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
+        <dd>
+          <p>The <code>FocusEvent</code> interface provides specific contextual information associated with Focus events.</p>
+          <p>To create an instance of the <code>FocusEvent</code> interface, use the <a href="#events-Events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("FocusEvent")</code></a> method call.</p>
+          <dl>
+            <dt>
+              <br />
+              <strong>IDL Definition</strong>
+            </dt>
+            <dd>
+              <div class="idl-code">
+                <pre>
+  // Introduced in DOM Level 3:
+  interface <a class="noxref" href="#events-Events-FocusEvent">FocusEvent</a> : <a class="noxref" href="#events-Events-UIEvent">UIEvent</a> {
+  readonly attribute <a class="noxref" href="#events-Events-EventTarget">EventTarget</a>     <a class="noxref" href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a>;
+  void               <a class="noxref" href="#events-event-type-initFocusEvent">initFocusEvent</a>(in DOMString typeArg, 
+                                in boolean canBubbleArg, 
+                                in boolean cancelableArg, 
+                                in views::AbstractView viewArg, 
+                                in long detailArg, 
+                                in <a class="noxref" href="#events-Events-EventTarget">EventTarget</a> relatedTargetArg);
+<div class="atrisk">
+  void               <a class="noxref" href="#events-event-type-initFocusEventNS">initFocusEventNS</a>(in DOMString namespaceURIArg, 
+                                  in DOMString typeArg, 
+                                  in boolean canBubbleArg, 
+                                  in boolean cancelableArg, 
+                                  in views::AbstractView viewArg, 
+                                  in long detailArg, 
+                                  in <a class="noxref" href="#events-Events-EventTarget">EventTarget</a> relatedTargetArg);
+</div>
+  };
+  </pre>
+              </div>
+              <br />
+            </dd>
+            <dt>
+              <strong>Attributes</strong>
+            </dt>
+            <dd>
+              <dl>
+                <dt><code class="attribute-name"><a id="events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> of type <a href="#events-Events-EventTarget"><code>EventTarget</code></a>, readonly</dt>
+                <dd>Used to identify a secondary <a href="#events-Events-EventTarget"><code>EventTarget</code></a> related to a UI event, depending on the type of event.<br /></dd>
+              </dl>
+            </dd>
+            <dt>
+              <strong>Methods</strong>
+            </dt>
+            <dd>
+              <dl>
+                <dt>
+                  <code class="method-name">
+                    <a id="events-event-type-initFocusEvent">initFocusEvent</a>
+                  </code>
+                </dt>
+                <dd>
+                  <div class="method">Initializes attributes of a <code>FocusEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.
+                    <div class="parameters"><strong>Parameters</strong>
+                      <div class="paramtable">
+                        <dl>
+                          <dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">relatedTargetArg</code> of type <a href="#events-Events-EventTarget"><code>EventTarget</code></a></dt>
+                          <dd>Specifies <a href="#events-Events-FocusEvent-relatedTarget"><code>FocusEvent.relatedTarget</code></a>. This value may be <code>null</code>.<br /></dd>
+                        </dl>
+                      </div>
+                    </div>
+                    <!-- parameters -->
+                    <div><strong>No Return Value</strong></div>
+                    <div><strong>No Exceptions</strong></div>
+                  </div>
+<!-- method -->
+                </dd>
+                <dt class="atrisk"><code class="method-name"><a id="events-event-type-initFocusEventNS">initFocusEventNS</a></code> introduced in <strong class="since">DOM Level 3</strong></dt>
+                <dd class="atrisk">
+                  <div class="method">Initializes attributes of a <code>FocusEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a>.
+                    <div class="parameters"><strong>Parameters</strong>
+                      <div class="paramtable">
+                        <dl>
+                          <dt><code class="parameter-name">namespaceURIArg</code> of type <code>DOMString</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
+                          <dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd>
+                          <dt><code class="parameter-name">relatedTargetArg</code> of type <a href="#events-Events-EventTarget"><code>EventTarget</code></a></dt>
+                          <dd>Refer to the <a href="#events-event-type-initFocusEvent"><code>FocusEvent.initFocusEvent()</code></a> method for a description of this parameter.<br /></dd>
+                        </dl>
+                      </div>
+                    </div>
+                    <!-- parameters -->
+                    <div><strong>No Return Value</strong></div>
+                    <div><strong>No Exceptions</strong></div>
+                  </div>
+<!-- method -->
+                </dd>
+              </dl>
+            </dd>
+          </dl>
+        </dd>
+      </dl>
+      <p>The Focus event types are listed below.</p>
+
+      <h4 class="div3 needswork"><a id="events-uievent-event-order" href="#events-uievent-event-order">5.2.2.1 Focus Event Order</a></h4>
+      <p>The focus events defined in this specification occur in a set order relative to one another.  The following is the typical sequence of events when a focus is shifted between elements (this order assumes that no element is initially focused):</p>
+      <ol>
+        <li><em>[user shifts focus]</em> <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a> (before first target element receives focus)</li>
+        <li><a class="eventtype" href="#event-type-focus"><code>focus</code></a> (after first target element receives focus)</li>
+        <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> (if supported)</li>
+        <li><em>[user shifts focus]</em> <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a> (before first target element loses focus)</li>
+        <li><a class="eventtype" href="#event-type-focusin"><code>focusin</code></a> (before second target element receives focus)</li>
+        <li><a class="eventtype" href="#event-type-blur"><code>blur</code></a> (after first target element loses focus)</li>
+        <li><a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a> (if supported)</li>
+        <li><a class="eventtype" href="#event-type-focus"><code>focus</code></a> (after second target element receives focus)</li>
+        <li><a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> (if supported)</li>
+      </ol>
+
+      <h4 class="div3 needswork"><a id="events-uievent-doc-focus" href="#events-uievent-doc-focus">5.2.2.2 Document Focus and Focus Context</a></h4>
+      <p>This event module includes event types for notification of changes in document <a class="def" href="#glossary-event-focus">focus</a>.  Depending on the environment, document focus may be distinct from user agent focus and operating system focus; this is referred to as focus context.  For example, in a typical desktop browser environment, the operating system context focus may be on one of many different applications, one of which is the browser; when the browser has focus, the user may shift  the application context focus (such as with the tab key) among different browser user interface fields (e.g. the Web site location bar, a search field, etc.) before or after achieving document focus; once the document itself has focus, sequential shifting of focus will step through the focusable elements in the document.  The event types defined in this specification deal exclusively with document focus, and the <a class="def" href="#glossary-event-target">event target</a> identified in the event details must only be part of the document or documents in the window, never a part of the browser or operating system, even when switching from one focus context to another.</p>
+      <p>Normally, a document always has a focused element, even if it is the document element itself, and a persistent <a class="def" href="#glossary-event-focus-ring">focus ring</a>; when switching between focus contexts, the document's currently focused element and focus ring normally remain the their current state; for example, if a document has three focusable elements, with the second element focused, when a user changes operating system focus to another application and then back to the browser, the second element will still be focused within the document, and tabbing will change the focus to the third element.  A <a class="def" href="#glossary-host-language">host language</a> may define specific elements which may or may not receive focus, the conditions user which an element may receive focus, the means by which focus may be changed, and the order in which the focus changes.  For example, in some cases an element may be given focus by moving a pointer over it, while other circumstances may require a mouse click; some elements may not be focusable at all, and some may be focusable only by special means (clicking on the element), but not by tabbing to it.  Documents may contain multiple focus rings.  Other specifications may define a more complex focus model than is described in this specification, including allowing multiple elements to have the current focus.</p>
+
+<!-- blur -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-blur">
+            <a class="eventtype noxref" href="#event-type-blur"><code>blur</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attributes is the <a class="def" href="#glossary-event-target">event target</a> losing focus.</td></tr></table>
+  A user agent must dispatch this event when an <a class="def" 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 is similar to <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>, but is dispatched after focus is shifted, and does not bubble.
+          </dd>
+        </dl>
+      </div>
+
+<!-- DOMFocusIn -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-DOMFocusIn">
+            <a class="eventtype noxref" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attributes is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
+            A user agent must dispatch this event when an <a class="def" 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>.
+            <p class="warning"><strong>Warning:</strong> the <a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the related event types <a class="eventtype" href="#event-type-focus"><code>focus</code></a> and <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>.</p>
+          </dd>
+        </dl>
+      </div>
+
+<!-- DOMFocusOut -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-DOMFocusOut">
+            <a class="eventtype noxref" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attributes is the <a class="def" href="#glossary-event-target">event target</a> losing focus.</td></tr></table>
+  A user agent must dispatch this event when an <a class="def" 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>.
+  <p class="warning"><strong>Warning:</strong> the <a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the related event types <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>.</p>
+          </dd>
+        </dl>
+      </div>
+
+<!-- focus -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-focus">
+            <a class="eventtype noxref" href="#event-type-focus"><code>focus</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> and <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attributes is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
+  A user agent must dispatch this event when an <a class="def" 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 is similar to <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>, but is dispatched after focus is shifted, and does not bubble..
+          </dd>
+        </dl>
+      </div>
+
+<!-- focusin -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-focusin">
+            <a class="eventtype noxref" href="#event-type-focusIn"><code>focusin</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> attribute is is the <a class="def" href="#glossary-event-target">event target</a> receiving focus, and the value of the <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attribute is the <a class="def" href="#glossary-event-target">event target</a> losing focus (if any).</td></tr></table>
+            A user agent must dispatch this event when an <a class="def" href="#glossary-event-target">event target</a> is about to receive focus. This event type must be dispatched before the element is given focus.  The <a class="def" href="#glossary-event-target">event target</a> must be the element which is about to receive focus.  This event type is similar to <a class="eventtype" href="#event-type-focus"><code>focus</code></a>, but is dispatched before focus is shifted, and does bubble..
+            <p class="note"><strong>Note:</strong> When using this event type, the author may use the event's <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attribute (or a host-language-specific method or means) to get the currently focused element before the focus shifts to the next focus <a class="def" href="#glossary-event-target">event target</a>, thus having optional access to both the element losing focus and the element gaining focus without the use of the <a class="eventtype" href="#event-type-blur"><code>blur</code></a> or <a class="eventtype" href="#event-type-focusout">focusout</a> event types.</p>
+          </dd>
+        </dl>
+      </div>
+
+<!-- focusout -->
+      <div class="event-definition assert must">
+        <dl>
+          <dt id="event-type-focusout">
+            <a class="eventtype noxref" href="#event-type-focusOut"><code>focusout</code></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>Interface</th><td><a href="#events-Events-FocusEvent"><code>FocusEvent</code></a></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>Cancelable</th><td>No</td></tr><tr class="assert must"><th>Default action</th><td>none</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.  The value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> attribute is is the <a class="def" href="#glossary-event-target">event target</a> losing focus, and the value of the <code class="attribute-name"><a href="#events-Events-FocusEvent-relatedTarget">relatedTarget</a></code> attribute is the <a class="def" href="#glossary-event-target">event target</a> receiving focus.</td></tr></table>
+            A user agent must dispatch this event when an <a class="def" href="#glossary-event-target">event target</a> is about to lose focus. This event type must be dispatched before the element loses focus.  The <a class="def" href="#glossary-event-target">event target</a> must be the element which is about to lose focus.  This event type is similar to <a class="eventtype" href="#event-type-blur"><code>blur</code></a>, but is dispatched before focus is shifted, and does bubble..
+          </dd>
+        </dl>
+      </div>
+    </div>
+    <!-- interface events-focusevents -->
+  
+  
     
-    
-<!-- div3 Events-KeyboardEvents-Interfaces -->
+<!-- interface events-mouseevents -->
     <div class="div3">
       <h3 class="div3"><a id="events-mouseevents" href="#events-mouseevents">5.2.3 Mouse Event Types</a></h3>
       <p>This module defines the feature MouseEvents 3.0 and depends on the feature UIEvents 3.0.</p>
@@ -2649,7 +2770,7 @@
           <p>The <code>MouseEvent</code> interface provides specific contextual information associated with Mouse events.</p>
           <p>In the case of nested elements mouse events 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 their descendent elements.</p>
           <p>To create an instance of the <code>MouseEvent</code> interface, use the <a href="#events-Events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MouseEvent")</code></a> method call.</p>
-          <p class="note"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code> or <code>initMouseEventNS</code>, implementations should use the client coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">DOM Level 0</a> implementations or other proprietary properties, e.g. <code>pageX</code>).</p>
+          <p class="note"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code> or <code>initMouseEventNS</code>, implementations should use the client coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">DOM Level 0</a> implementations or other proprietary attributes, e.g. <code>pageX</code>).</p>
           <dl>
             <dt>
               <br />
@@ -2956,6 +3077,8 @@
     </div>
 <!-- div2 Events-eventgroupings -->
 
+
+
 <!-- div3 Events-eventgroupings-wheelevents -->
     <div class="div3">
       <h3 class="div3"><a id="events-mousewheelevents" href="#events-mousewheelevents">5.2.4 Mouse Wheel Event Types</a></h3>