Short URL: http://html5.org/r/2804
| SVN | Bug | Comment | Time (UTC) |
|---|---|---|---|
| 2804 | Handle elements losing focus when they are hidden, etc. | 2009-02-13 01:09 |
Index: source
===================================================================
--- source (revision 2803)
+++ source (revision 2804)
@@ -38255,7 +38255,8 @@
<li><code>command</code> elements that do not have a <code
title="attr-command-disabled">disabled</code> attribute</li>
- <li>any other element, if it is <span>focusable</span></li>
+ <li>any other element, if it is <span>specially
+ focusable</span></li>
</ul>
@@ -38318,7 +38319,8 @@
title="command-facet-disabledstate">Disabled State</span> facet
is false (not disabled)</li>
- <li>any other element, if it is <span>focusable</span></li>
+ <li>any other element, if it is <span>specially
+ focusable</span></li>
</ul>
@@ -48613,14 +48615,12 @@
</dl>
- <p>An element is <dfn>focusable</dfn> if the <code
+ <p>An element is <dfn>specially focusable</dfn> if the <code
title="attr-tabindex">tabindex</code> attribute's definition above
- defines the element to be focusable <em>and</em> the element is
- <span>being rendered</span><!-- XXX xref, define display:none as not
- being rendered, off-screen as being rendered? -->.</p>
+ defines the element to be focusable.</p>
- <p>An element that is <span>focusable</span> but does not otherwise
- have an <span>activation behavior</span> defined has an
+ <p>An element that is <span>specially focusable</span> but does not
+ otherwise have an <span>activation behavior</span> defined has an
<span>activation behavior</span> that does nothing.</p>
<p class="note">This means that an element that is only focusable
@@ -48629,6 +48629,53 @@
to a non-mouse activation (e.g. hitting the "enter" key while the
element is focused).</p>
+ <p>An element is <dfn>focusable</dfn> if the user agent's default
+ behavior allows it to be focusable or if the element is
+ <span>specially focusable</span>, but only if the element is
+ <span>being rendered</span><!-- XXX xref, define display:none,
+ orphan nodes as not being rendered, off-screen as being rendered?
+ -->.</p>
+
+ <p>User agents should make the following elements
+ <span>focusable</span>, unless platform conventions dictate
+ otherwise:</p>
+
+ <ul>
+
+ <li><code>a</code> elements that have an <code
+ title="attr-hyperlink-href">href</code> attribute</li>
+
+ <li class="XXX"><code>area</code> elements that have an <code
+ title="attr-hyperlink-href">href</code> attribute</li> <!-- should
+ define the behavior in the face of multiple images and in the face
+ of no images -->
+
+ <li><code>link</code> elements that have an <code
+ title="attr-link-href">href</code> attribute</li>
+
+ <li><code>bb</code> elements whose <code
+ title="attr-bb-type">type</code> attribute is in a state whose
+ <i>relevance</i> is true</li>
+
+ <li><code>button</code> elements that are not <span
+ title="concept-fe-disabled">disabled</span></li>
+
+ <li><code>input</code> elements whose <code
+ title="attr-input-type">type</code> attribute are not in the
+ <span title="attr-input-type-hidden">Hidden</span> state and that
+ are not <span title="concept-fe-disabled">disabled</span></li>
+
+ <li><code>select</code> elements that are not <span
+ title="concept-fe-disabled">disabled</span></li>
+
+ <li><code>textarea</code> elements that are not <span
+ title="concept-fe-disabled">disabled</span></li>
+
+ <li><code>command</code> elements that do not have a <code
+ title="attr-command-disabled">disabled</code> attribute</li>
+
+ </ul>
+
<p>The <dfn title="dom-tabIndex"><code>tabIndex</code></dfn> DOM
attribute must <span>reflect</span> the value of the <code
title="attr-tabindex">tabindex</code> content attribute. If the
@@ -48693,11 +48740,21 @@
</ol>
- <p>User agents should run the <span>unfocusing steps</span> for an
- element whenever the user moves the focus away from any
- <span>focusable</span> element.</p>
+ <p>When the user moves the focus away from a <span>focusable</span>
+ element, the user agent should run the <span>unfocusing steps</span>
+ that element.</p>
+ <p>When an element that is focused stops being a
+ <span>focusable</span> element, the user agent should run the
+ <span>unfocusing steps</span> that element.</p>
+ <p class="example">For example, this might happen because the
+ element is removed from its <code>Document</code>, or has a <code
+ title="attr-hidden">hidden</code> attribute added. It would also
+ happen to an <code>input</code> element when the element gets <span
+ title="concept-fe-disabled">disabled</span>.</p>
+
+
<h4>Document-level focus APIs</h4>
<p>The <dfn