[html5] r2801 - [] (0) spellcheck='' attribute

whatwg at whatwg.org whatwg at whatwg.org
Thu Feb 12 02:36:08 PST 2009


Author: ianh
Date: 2009-02-12 02:36:07 -0800 (Thu, 12 Feb 2009)
New Revision: 2801

Modified:
   index
   source
Log:
[] (0) spellcheck='' attribute

Modified: index
===================================================================
--- index	2009-02-12 02:50:12 UTC (rev 2800)
+++ index	2009-02-12 10:36:07 UTC (rev 2801)
@@ -833,33 +833,34 @@
     <ol>
      <li><a href=#user-editing-actions><span class=secno>6.7.1 </span>User editing actions</a></li>
      <li><a href=#making-entire-documents-editable><span class=secno>6.7.2 </span>Making entire documents editable</a></ol></li>
-   <li><a href=#dnd><span class=secno>6.8 </span>Drag and drop</a>
+   <li><a href=#spelling-and-grammar-checking><span class=secno>6.8 </span>Spelling and grammar checking</a></li>
+   <li><a href=#dnd><span class=secno>6.9 </span>Drag and drop</a>
     <ol>
-     <li><a href=#introduction-4><span class=secno>6.8.1 </span>Introduction</a></li>
-     <li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>6.8.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
-     <li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>6.8.3 </span>Events fired during a drag-and-drop action</a></li>
-     <li><a href=#drag-and-drop-processing-model><span class=secno>6.8.4 </span>Drag-and-drop processing model</a>
+     <li><a href=#introduction-4><span class=secno>6.9.1 </span>Introduction</a></li>
+     <li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>6.9.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
+     <li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>6.9.3 </span>Events fired during a drag-and-drop action</a></li>
+     <li><a href=#drag-and-drop-processing-model><span class=secno>6.9.4 </span>Drag-and-drop processing model</a>
       <ol>
-       <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.8.4.1 </span>When the drag-and-drop operation starts or ends in another
+       <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.9.4.1 </span>When the drag-and-drop operation starts or ends in another
   document</a></li>
-       <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.8.4.2 </span>When the drag-and-drop operation starts or ends in another
+       <li><a href=#when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.9.4.2 </span>When the drag-and-drop operation starts or ends in another
   application</a></ol></li>
-     <li><a href=#the-draggable-attribute><span class=secno>6.8.5 </span>The <code>draggable</code> attribute</a></li>
-     <li><a href=#copy-and-paste><span class=secno>6.8.6 </span>Copy and paste</a>
+     <li><a href=#the-draggable-attribute><span class=secno>6.9.5 </span>The <code>draggable</code> attribute</a></li>
+     <li><a href=#copy-and-paste><span class=secno>6.9.6 </span>Copy and paste</a>
       <ol>
-       <li><a href=#copy-to-clipboard><span class=secno>6.8.6.1 </span>Copy to clipboard</a></li>
-       <li><a href=#cut-to-clipboard><span class=secno>6.8.6.2 </span>Cut to clipboard</a></li>
-       <li><a href=#paste-from-clipboard><span class=secno>6.8.6.3 </span>Paste from clipboard</a></li>
-       <li><a href=#paste-from-selection><span class=secno>6.8.6.4 </span>Paste from selection</a></ol></li>
-     <li><a href=#security-risks-in-the-drag-and-drop-model><span class=secno>6.8.7 </span>Security risks in the drag-and-drop model</a></ol></li>
-   <li><a href=#undo><span class=secno>6.9 </span>Undo history</a>
+       <li><a href=#copy-to-clipboard><span class=secno>6.9.6.1 </span>Copy to clipboard</a></li>
+       <li><a href=#cut-to-clipboard><span class=secno>6.9.6.2 </span>Cut to clipboard</a></li>
+       <li><a href=#paste-from-clipboard><span class=secno>6.9.6.3 </span>Paste from clipboard</a></li>
+       <li><a href=#paste-from-selection><span class=secno>6.9.6.4 </span>Paste from selection</a></ol></li>
+     <li><a href=#security-risks-in-the-drag-and-drop-model><span class=secno>6.9.7 </span>Security risks in the drag-and-drop model</a></ol></li>
+   <li><a href=#undo><span class=secno>6.10 </span>Undo history</a>
     <ol>
-     <li><a href=#the-undomanager-interface><span class=secno>6.9.1 </span>The <code>UndoManager</code> interface</a></li>
-     <li><a href=#undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.9.2 </span>Undo: moving back in the undo transaction history</a></li>
-     <li><a href=#redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.9.3 </span>Redo: moving forward in the undo transaction history</a></li>
-     <li><a href=#the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.9.4 </span>The <code>UndoManagerEvent</code> interface and the <code title=event-undo>undo</code> and <code title=event-redo>redo</code> events</a></li>
-     <li><a href=#implementation-notes><span class=secno>6.9.5 </span>Implementation notes</a></ol></li>
-   <li><a href=#command-apis><span class=secno>6.10 </span>Command APIs</a></ol></li>
+     <li><a href=#the-undomanager-interface><span class=secno>6.10.1 </span>The <code>UndoManager</code> interface</a></li>
+     <li><a href=#undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.10.2 </span>Undo: moving back in the undo transaction history</a></li>
+     <li><a href=#redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.10.3 </span>Redo: moving forward in the undo transaction history</a></li>
+     <li><a href=#the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.10.4 </span>The <code>UndoManagerEvent</code> interface and the <code title=event-undo>undo</code> and <code title=event-redo>redo</code> events</a></li>
+     <li><a href=#implementation-notes><span class=secno>6.10.5 </span>Implementation notes</a></ol></li>
+   <li><a href=#command-apis><span class=secno>6.11 </span>Command APIs</a></ol></li>
  <li><a href=#comms><span class=secno>7 </span>Communication</a>
   <ol>
    <li><a href=#event-definitions><span class=secno>7.1 </span>Event definitions</a></li>
@@ -6985,6 +6986,7 @@
            attribute DOMString <a href=#dom-contenteditable title=dom-contentEditable>contentEditable</a>;
   readonly attribute boolean <a href=#dom-iscontenteditable title=dom-isContentEditable>isContentEditable</a>;
            attribute <a href=#htmlmenuelement>HTMLMenuElement</a> <a href=#dom-contextmenu title=dom-contextMenu>contextMenu</a>;
+           attribute boolean <a href=#dom-spellcheck title=dom-spellcheck>spellcheck</a>;
 
   // <span>styling</span>
   readonly attribute <span>CSSStyleDeclaration</span> <a href=#dom-style title=dom-style>style</a>;
@@ -7044,6 +7046,7 @@
    <dd><code title=attr-hidden><a href=#the-hidden-attribute>hidden</a></code></dd>
    <dd><code title=attr-lang><a href=#the-lang-and-xml:lang-attributes>lang</a></code></dd>
    <dd><code title=attr-style><a href=#the-style-attribute>style</a></code></dd>
+   <dd><code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code></dd>
    <dd><code title=attr-tabindex><a href=#attr-tabindex>tabindex</a></code></dd>
    <dd><code title=attr-title><a href=#the-title-attribute>title</a></code></dd>
   </dl><p>In addition, unless otherwise specified, the following
@@ -31469,7 +31472,7 @@
     <code><a href=#datagrid>datagrid</a></code> element (the <code><a href=#the-select-element>select</a></code> or
     <code><a href=#the-datalist-element>datalist</a></code> element), that skips all nodes other than
     <code><a href=#the-optgroup-element>optgroup</a></code> and <code><a href=#the-option-element>option</a></code> elements, as well as
-    any descendents of any <code><a href=#the-option-element>option</a></code> elements.</p>
+    any descendants of any <code><a href=#the-option-element>option</a></code> elements.</p>
 
     <p>Given a path <var title="">row</var>, the corresponding element
     is the one obtained by drilling into the view, taking the child
@@ -31712,7 +31715,7 @@
 
     <p>If the first element child of a cell's element is a
     <code><a href=#the-select-element>select</a></code> element that has a no <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code> attribute and has at
-    least one <code><a href=#the-option-element>option</a></code> element descendent, then the cell
+    least one <code><a href=#the-option-element>option</a></code> element descendant, then the cell
     acts as a cyclable cell.</p>
 
     <p>The "current" <code><a href=#the-option-element>option</a></code> element is the selected
@@ -31734,9 +31737,9 @@
     element such that the next <code><a href=#the-option-element>option</a></code> element after the
     current <code><a href=#the-option-element>option</a></code> element is the only one that is
     selected (in <a href=#tree-order>tree order</a>). If the current <code><a href=#the-option-element>option</a></code>
-    element is the last <code><a href=#the-option-element>option</a></code> element descendent of the
+    element is the last <code><a href=#the-option-element>option</a></code> element descendant of the
     <code><a href=#the-select-element>select</a></code>, then the first <code><a href=#the-option-element>option</a></code> element
-    descendent must be selected instead.</p>
+    descendant must be selected instead.</p>
 
     <p>The <code title=dom-provider-setCellCheckedState><a href=#dom-provider-setcellcheckedstate>setCellCheckedState()</a></code>
     and <code title=dom-provider-editCell><a href=#dom-provider-editcell>editCell()</a></code> methods
@@ -33924,8 +33927,8 @@
 
     <ul><li><code><a href=#the-input-element>input</a></code> elements to which the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute applies,
      but that are not <i title=concept-input-immutable><a href=#concept-input-immutable>immutable</a></i>
-     (i.e. that do not have the attribute specified and that are not
-     <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>)</li>
+     (i.e. that do not have the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute specified
+     and that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>)</li>
 
      <li><code><a href=#the-textarea-element>textarea</a></code> elements that do not have a <code title=attr-textarea-readonly><a href=#attr-textarea-readonly>readonly</a></code> attribute, and
      that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a></li>
@@ -43344,8 +43347,165 @@
 
 
 
-  <h3 id=dnd><span class=secno>6.8 </span><dfn>Drag and drop</dfn></h3>
+  <h3 id=spelling-and-grammar-checking><span class=secno>6.8 </span>Spelling and grammar checking</h3>
 
+  <p>User agents can support the checking of spelling and grammar of
+  editable text, either in form controls (such as the value of
+  <code><a href=#the-textarea-element>textarea</a></code> elements), or in elements in an <a href=#editing-host>editing
+  host</a> (using <code title=attr-contenteditable><a href=#attr-contenteditable>contenteditable</a></code>).</p>
+
+  <p>For each element, user agents must establish a <dfn id=concept-spellcheck-default title=concept-spellcheck-default>default behavior</dfn>, either
+  through defaults or through preferences expressed by the user. There
+  are three possible default behaviors for each element:</p>
+
+  <dl><dt><dfn id=concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</dfn>
+
+   <dd>The element will be checked for spelling and grammar if its
+   contents are editable.
+
+   <dt><dfn id=concept-spellcheck-default-false title=concept-spellcheck-default-false>false-by-default</dfn>
+
+   <dd>The element will never be checked for spelling and grammar.
+
+   <dt><dfn id=concept-spellcheck-default-inherit title=concept-spellcheck-default-inherit>inherit-by-default</dfn>
+
+   <dd>The element's default behavior is the same asits parent
+   element's. Elements that have no parent element cannot have this as
+   their default behavior.
+
+  </dl><hr><p>The <dfn id=attr-spellcheck title=attr-spellcheck><code>spellcheck</code></dfn>
+  attribute is an <a href=#enumerated-attribute>enumerated attribute</a> whose keywords are
+  <code title="">true</code> and <code title="">false</code>. The <code title="">true</code> keyword map to the <i>true</i> state. The <code title="">false</code> keyword maps to the <i>false</i> state. In
+  addition, there is a third state, the <i>inherit</i> state, which is
+  the <i>missing value default</i> (and the <i>invalid value
+  default</i>).</p>
+
+  <hr><p>The <dfn id=dom-spellcheck title=dom-spellcheck><code>spellcheck</code></dfn> DOM
+  attribute, on getting, must return true if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute is in
+  the <i>true</i> state, or if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute is in
+  the <i>inherit</i> state and the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</a>, or
+  if the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code>
+  content attribute is in the <i>inherit</i> state and the element's
+  <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is
+  <a href=#concept-spellcheck-default-inherit title=concept-spellcheck-default-inherit>inherit-by-default</a>
+  and the element's parent element's <code title=dom-spellcheck><a href=#dom-spellcheck>spellcheck</a></code> DOM attribute would return
+  true; otherwise, if none of those conditions applies, then the
+  attribute must instead return false.</p>
+
+  <p class=note>The <code title=dom-spellcheck><a href=#dom-spellcheck>spellcheck</a></code>
+  DOM attribute is not affected by user preferences that override the
+  <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute,
+  and therefore might not reflect the actual spellchecking state.</p>
+
+  <p>On setting, if the new value is true, then the element's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute must be
+  set to the literal string "<code title="">true</code>", otherwise it
+  must be set to the literal string "<code title="">false</code>".
+
+  </p><hr><p>User agents must only consider the following pieces of text as
+  checkable for the purposes of this feature:</p>
+
+  <ul><li>The value of <code><a href=#the-input-element>input</a></code> elements to which the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute applies, but
+   that are not <i title=concept-input-immutable><a href=#concept-input-immutable>immutable</a></i>
+   (i.e. that do not have the <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code> attribute specified and
+   that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>).</li>
+
+   <li>The value of <code><a href=#the-textarea-element>textarea</a></code> elements that do not have a
+   <code title=attr-textarea-readonly><a href=#attr-textarea-readonly>readonly</a></code> attribute and
+   that are not <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a>.</li>
+
+   <li>Text in <a href=#text-node title="text node">text nodes</a> that are
+   children of <a href=#editable>editable</a> elements.</li>
+
+   <li>Text in attributes of <a href=#editable>editable</a> elements.</li>
+
+  </ul><p>For text that is part of a <a href=#text-node>text node</a>, the element
+  with which the text is associated is the element that is the
+  immediate parent of the first character of the word, sentence, or
+  other piece of text. For text in attributes, it is the attribute's
+  element. For the values of <code><a href=#the-input-element>input</a></code> and
+  <code><a href=#the-textarea-element>textarea</a></code> elements, it is the element itself.</p>
+
+  <p>To determine if a word, sentence, or other piece of text in an
+  applicable element (as defined above) is to have spelling- and/or
+  grammar-checking enabled, the UA must use the following
+  algorithm:</p>
+
+  <ol><!-- user override --><li>If the user has disabled the checking for this text, then the
+   checking is disabled.</li>
+
+   <li>Otherwise, if the user has forced the checking for this text to
+   always be enabled, then the checking is enabled.</li>
+
+   <!-- content attribute: on, off -->
+
+   <li>Otherwise, if the element with which the text is associated has
+   a <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content
+   attribute, then: if that attribute is in the <i>true</i> state,
+   then checking is enabled; otherwise, if that attribute is in the
+   <i>false</i> state, then checking is disabled.</li>
+
+   <!-- inherit, if there is one to inherit from -->
+
+   <li>Otherwise, if there is an ancestor element with a <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content attribute that is
+   not in the <i>inherit</i> state, then: if the nearest such
+   ancestor's <code title=attr-spellcheck><a href=#attr-spellcheck>spellcheck</a></code> content
+   attribute is in the <i>true</i> state, then checking is enabled;
+   otherwise, checking is disabled.</li>
+
+   <!-- default -->
+
+   <li>Otherwise, if the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-true title=concept-spellcheck-default-true>true-by-default</a>,
+   then checking is enabled.</li>
+
+   <li>Otherwise, if the element's <a href=#concept-spellcheck-default title=concept-spellcheck-default>default behavior</a> is <a href=#concept-spellcheck-default-false title=concept-spellcheck-default-false>false-by-default</a>,
+   then checking is disabled.</li>
+
+   <!-- default inheritance -->
+
+   <li>Otherwise, if the element's parent element has <em>its</em>
+   checking enabled, then checking is enabled.</li>
+
+   <li>Otherwise, checking is disabled.</li>
+
+  </ol><p>If the checking is enabled for a word/sentence/text, the user
+  agent should indicate spelling and/or grammar errors in that
+  text. User agents should take into account the other semantics given
+  in the document when suggesting spelling and grammar
+  corrections. User agents may use the language of the element to
+  determine what spelling and grammar rules to use, or may use the
+  user's preferred language settings. UAs should use
+  <code><a href=#the-input-element>input</a></code> element attributes such as <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code> to ensure that the
+  resulting value is valid, where possible.</p>
+
+  <p>If checking is disabled, the user agent should not indicate
+  spelling or grammar errors for that text.</p>
+
+  <div class=example>
+
+   <p>The element with ID "a" in the following example would be the
+   one used to determine if the word "Hello" is checked for spelling
+   errors. In this example, it would not be.</p>
+
+   <pre><div contenteditable="true">
+ <span spellcheck="false" id="a">Hell</span><em>o!</em>
+</div></pre>
+
+   <p>The element with ID "b" in the following example would have
+   checking enabled (the leading space character in the attribute's
+   value on the <code><a href=#the-input-element>input</a></code> element causes the attribute to be
+   ignored, so the ancestor's value is used instead, regardless of the
+   default).</p>
+
+   <pre><p spellcheck="true">
+ <label>Name: <input spellcheck=" false" id="b"></label>
+</p></pre>
+
+   </div>
+
+
+
+  <h3 id=dnd><span class=secno>6.9 </span><dfn>Drag and drop</dfn></h3>
+
 <!--XXX
 
 http://msdn.microsoft.com/workshop/author/datatransfer/overview.asp
@@ -43402,14 +43562,14 @@
   step).</p>
 
 
-  <h4 id=introduction-4><span class=secno>6.8.1 </span>Introduction</h4>
+  <h4 id=introduction-4><span class=secno>6.9.1 </span>Introduction</h4>
 
   <p><em>This section is non-normative.</em></p>
 
   <p class=XXX>It's also currently non-existent.</p>
 
 
-  <h4 id=the-dragevent-and-datatransfer-interfaces><span class=secno>6.8.2 </span>The <code><a href=#dragevent>DragEvent</a></code> and <code><a href=#datatransfer>DataTransfer</a></code> interfaces</h4>
+  <h4 id=the-dragevent-and-datatransfer-interfaces><span class=secno>6.9.2 </span>The <code><a href=#dragevent>DragEvent</a></code> and <code><a href=#datatransfer>DataTransfer</a></code> interfaces</h4>
 
   <p>The drag-and-drop processing model involves several events. They
   all use the <code><a href=#dragevent>DragEvent</a></code> interface.</p>
@@ -43539,7 +43699,7 @@
   exact specified image.</p>
 
 
-  <h4 id=events-fired-during-a-drag-and-drop-action><span class=secno>6.8.3 </span>Events fired during a drag-and-drop action</h4>
+  <h4 id=events-fired-during-a-drag-and-drop-action><span class=secno>6.9.3 </span>Events fired during a drag-and-drop action</h4>
 
   <p>The following events are involved in the drag-and-drop
   model. Whenever the processing model described below causes one of
@@ -43658,7 +43818,7 @@
     <td><code title="">link</code></td>
    <tr><td>Any other case</td>
     <td><code title="">copy</code></td>
-   </table><h4 id=drag-and-drop-processing-model><span class=secno>6.8.4 </span>Drag-and-drop processing model</h4>
+   </table><h4 id=drag-and-drop-processing-model><span class=secno>6.9.4 </span>Drag-and-drop processing model</h4>
 
   <p>When the user attempts to begin a drag operation, the user agent
   must first determine what is being dragged. If the drag operation
@@ -44036,7 +44196,7 @@
 
     </ol></li>
 
-  </ol><h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.8.4.1 </span>When the drag-and-drop operation starts or ends in another
+  </ol><h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-document><span class=secno>6.9.4.1 </span>When the drag-and-drop operation starts or ends in another
   document</h5>
 
   <p>The model described above is independent of which
@@ -44050,7 +44210,7 @@
   the requirements in the event section above? -->
 
 
-  <h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.8.4.2 </span>When the drag-and-drop operation starts or ends in another
+  <h5 id=when-the-drag-and-drop-operation-starts-or-ends-in-another-application><span class=secno>6.9.4.2 </span>When the drag-and-drop operation starts or ends in another
   application</h5>
 
   <p>If the drag is initiated in another application, the <a href=#source-node>source
@@ -44075,7 +44235,7 @@
 
 
 
-  <h4 id=the-draggable-attribute><span class=secno>6.8.5 </span>The <dfn title=attr-draggable><code>draggable</code></dfn> attribute</h4>
+  <h4 id=the-draggable-attribute><span class=secno>6.9.5 </span>The <dfn title=attr-draggable><code>draggable</code></dfn> attribute</h4>
 
   <p>All elements may have the <code title=attr-draggable><a href=#the-draggable-attribute>draggable</a></code> content attribute set. The
   <code title=attr-draggable><a href=#the-draggable-attribute>draggable</a></code> attribute is an
@@ -44116,7 +44276,7 @@
 
 
 
-  <h4 id=copy-and-paste><span class=secno>6.8.6 </span>Copy and paste</h4>
+  <h4 id=copy-and-paste><span class=secno>6.9.6 </span>Copy and paste</h4>
 
   <p>Copy-and-paste is a form of drag-and-drop: the "copy" part is
   equivalent to dragging content to another application (the
@@ -44128,7 +44288,7 @@
   source is the selection.</p>
 
 
-  <h5 id=copy-to-clipboard><span class=secno>6.8.6.1 </span>Copy to clipboard</h5>
+  <h5 id=copy-to-clipboard><span class=secno>6.9.6.1 </span>Copy to clipboard</h5>
 
   <p>When the user invokes a copy operation, the user agent must act
   as if the user had invoked a drag on the current selection. If the
@@ -44142,14 +44302,14 @@
   operations (e.g. updating the clipboard).</p>
 
 
-  <h5 id=cut-to-clipboard><span class=secno>6.8.6.2 </span>Cut to clipboard</h5>
+  <h5 id=cut-to-clipboard><span class=secno>6.9.6.2 </span>Cut to clipboard</h5>
 
   <p>When the user invokes a cut operation, the user agent must act as
   if the user had invoked a copy operation (see the previous section),
   followed, if the copy was completed successfully, by <a href=#contenteditable-delete>a selection delete operation</a>.</p>
 
 
-  <h5 id=paste-from-clipboard><span class=secno>6.8.6.3 </span>Paste from clipboard</h5>
+  <h5 id=paste-from-clipboard><span class=secno>6.9.6.3 </span>Paste from clipboard</h5>
 
   <p>When the user invokes a clipboard paste operation, the user agent
   must act as if the user had invoked a drag on a hypothetical
@@ -44163,7 +44323,7 @@
   canceling it.</p>
 
 
-  <h5 id=paste-from-selection><span class=secno>6.8.6.4 </span>Paste from selection</h5>
+  <h5 id=paste-from-selection><span class=secno>6.9.6.4 </span>Paste from selection</h5>
 
   <p>When the user invokes a selection paste operation, the user agent
   must act as if the user had invoked a drag on the current selection,
@@ -44173,7 +44333,7 @@
 
 
 
-  <h4 id=security-risks-in-the-drag-and-drop-model><span class=secno>6.8.7 </span>Security risks in the drag-and-drop model</h4>
+  <h4 id=security-risks-in-the-drag-and-drop-model><span class=secno>6.9.7 </span>Security risks in the drag-and-drop model</h4>
 
   <p>User agents must not make the data added to the
   <code><a href=#datatransfer>DataTransfer</a></code> object during the <code title=event-dragstart><a href=#event-dragstart>dragstart</a></code> event available to scripts
@@ -44200,7 +44360,7 @@
 
 
 
-  <h3 id=undo><span class=secno>6.9 </span><dfn>Undo history</dfn></h3>
+  <h3 id=undo><span class=secno>6.10 </span><dfn>Undo history</dfn></h3>
 
   <p class=XXX>There has got to be a better way of doing this, surely.</p>
 
@@ -44241,7 +44401,7 @@
   drawing tool).</p>
 
 
-  <h4 id=the-undomanager-interface><span class=secno>6.9.1 </span>The <code><a href=#undomanager>UndoManager</a></code> interface</h4>
+  <h4 id=the-undomanager-interface><span class=secno>6.10.1 </span>The <code><a href=#undomanager>UndoManager</a></code> interface</h4>
 
   <div class=XXX>
 
@@ -44375,7 +44535,7 @@
   the DOM go in as if the user had done them.</p>
 
 
-  <h4 id=undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.9.2 </span><dfn title=do-undo>Undo: moving back in the undo transaction history</dfn></h4>
+  <h4 id=undo:-moving-back-in-the-undo-transaction-history><span class=secno>6.10.2 </span><dfn title=do-undo>Undo: moving back in the undo transaction history</dfn></h4>
 
   <p>When the user invokes an undo operation, or when the <code title=dom-document-execCommand><a href=#execCommand>execCommand()</a></code> method is
   called with the <code title=command-undo><a href=#command-undo>undo</a></code> command, the
@@ -44412,7 +44572,7 @@
   command to undo his undo.</p>
 
 
-  <h4 id=redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.9.3 </span><dfn title=do-redo>Redo: moving forward in the undo transaction history</dfn></h4>
+  <h4 id=redo:-moving-forward-in-the-undo-transaction-history><span class=secno>6.10.3 </span><dfn title=do-redo>Redo: moving forward in the undo transaction history</dfn></h4>
 
   <p>When the user invokes a redo operation, or when the <code title=dom-document-execCommand><a href=#execCommand>execCommand()</a></code> method is
   called with the <code title=command-redo><a href=#command-redo>redo</a></code> command, the
@@ -44446,7 +44606,7 @@
   object, using the <a href=#undo-object>undo object</a> entry's associated undo
   object as the event's data.</p>
 
-  <h4 id=the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.9.4 </span>The <code><a href=#undomanagerevent>UndoManagerEvent</a></code> interface and the <code title=event-undo><a href=#event-undo>undo</a></code> and <code title=event-redo><a href=#event-redo>redo</a></code> events</h4>
+  <h4 id=the-undomanagerevent-interface-and-the-undo-and-redo-events><span class=secno>6.10.4 </span>The <code><a href=#undomanagerevent>UndoManagerEvent</a></code> interface and the <code title=event-undo><a href=#event-undo>undo</a></code> and <code title=event-redo><a href=#event-redo>redo</a></code> events</h4>
 
   <pre class=idl>interface <dfn id=undomanagerevent>UndoManagerEvent</dfn> : Event {
   readonly attribute any <a href=#dom-undomanagerevent-data title=dom-UndoManagerEvent-data>data</a>;
@@ -44469,7 +44629,7 @@
   relevant <a href=#undo-object>undo object</a>.</p>
 
 
-  <h4 id=implementation-notes><span class=secno>6.9.5 </span>Implementation notes</h4>
+  <h4 id=implementation-notes><span class=secno>6.10.5 </span>Implementation notes</h4>
 
   <p>How user agents present the above conceptual model to the user is
   not defined. The undo interface could be a filtered view of the
@@ -44490,7 +44650,7 @@
 
 
 
-  <h3 id=command-apis><span class=secno>6.10 </span>Command APIs</h3>
+  <h3 id=command-apis><span class=secno>6.11 </span>Command APIs</h3>
 
   <p>The <dfn id=execCommand title=dom-document-execCommand><code>execCommand(<var title="">commandId</var>, <var title="">showUI</var>, <var title="">value</var>)</code></dfn> method on the
   <code><a href=#htmldocument>HTMLDocument</a></code> interface allows scripts to perform
@@ -56799,7 +56959,7 @@
   "<code title="">center</code>", are expected to center text within
   themselves, as if they had their 'text-align' property set to
   'center' in a <a href=#presentational-hints title="presentational hints">presentational
-  hint</a>, and to <a href=#align-descendents>align descendents</a> to the center.</p>
+  hint</a>, and to <a href=#align-descendants>align descendants</a> to the center.</p>
 
   <p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
   <code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56808,7 +56968,7 @@
   <a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">left</code>", are expected to left-align text within
   themselves, as if they had their 'text-align' property set to 'left'
   in a <a href=#presentational-hints title="presentational hints">presentational hint</a>,
-  and to <a href=#align-descendents>align descendents</a> to the left.</p>
+  and to <a href=#align-descendants>align descendants</a> to the left.</p>
 
   <p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
   <code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56817,7 +56977,7 @@
   <a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">right</code>", are expected to right-align text within
   themselves, as if they had their 'text-align' property set to
   'right' in a <a href=#presentational-hints title="presentational hints">presentational
-  hint</a>, and to <a href=#align-descendents>align descendents</a> to the right.</p>
+  hint</a>, and to <a href=#align-descendants>align descendants</a> to the right.</p>
 
   <p>The <code><a href=#the-div-element>div</a></code>, <code><a href=#the-caption-element>caption</a></code>, <code><a href=#the-thead-element>thead</a></code>,
   <code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-tr-element>tr</a></code>,
@@ -56826,10 +56986,10 @@
   <a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for the string "<code title="">justify</code>", are expected to full-justify text within
   themselves, as if they had their 'text-align' property set to
   'justify' in a <a href=#presentational-hints title="presentational hints">presentational
-  hint</a>, and to <a href=#align-descendents>align descendents</a> to the left.</p>
+  hint</a>, and to <a href=#align-descendants>align descendants</a> to the left.</p>
 
-  <p>When a user agent is to <dfn id=align-descendents>align descendents</dfn> of a node,
-  the user agent is expected to align only those descendents that have
+  <p>When a user agent is to <dfn id=align-descendants>align descendants</dfn> of a node,
+  the user agent is expected to align only those descendants that have
   both their 'margin-left' and 'margin-right' properties computing to
   a value other than 'auto', that are over-constrained and that have
   one of those two margins with a used value forced to a greater

Modified: source
===================================================================
--- source	2009-02-12 02:50:12 UTC (rev 2800)
+++ source	2009-02-12 10:36:07 UTC (rev 2801)
@@ -7061,6 +7061,7 @@
            attribute DOMString <span title="dom-contentEditable">contentEditable</span>;
   readonly attribute boolean <span title="dom-isContentEditable">isContentEditable</span>;
            attribute <span>HTMLMenuElement</span> <span title="dom-contextMenu">contextMenu</span>;
+           attribute boolean <span title="dom-spellcheck">spellcheck</span>;
 
   // <span>styling</span>
   readonly attribute <span>CSSStyleDeclaration</span> <span title="dom-style">style</span>;
@@ -7121,6 +7122,7 @@
    <dd><code title="attr-hidden">hidden</code></dd>
    <dd><code title="attr-lang">lang</code></dd>
    <dd><code title="attr-style">style</code></dd>
+   <dd><code title="attr-spellcheck">spellcheck</code></dd>
    <dd><code title="attr-tabindex">tabindex</code></dd>
    <dd><code title="attr-title">title</code></dd>
   </dl>
@@ -35558,7 +35560,7 @@
     <code>datagrid</code> element (the <code>select</code> or
     <code>datalist</code> element), that skips all nodes other than
     <code>optgroup</code> and <code>option</code> elements, as well as
-    any descendents of any <code>option</code> elements.</p>
+    any descendants of any <code>option</code> elements.</p>
 
     <p>Given a path <var title="">row</var>, the corresponding element
     is the one obtained by drilling into the view, taking the child
@@ -35855,7 +35857,7 @@
     <p>If the first element child of a cell's element is a
     <code>select</code> element that has a no <code
     title="attr-select-multiple">multiple</code> attribute and has at
-    least one <code>option</code> element descendent, then the cell
+    least one <code>option</code> element descendant, then the cell
     acts as a cyclable cell.</p>
 
     <p>The "current" <code>option</code> element is the selected
@@ -35881,9 +35883,9 @@
     element such that the next <code>option</code> element after the
     current <code>option</code> element is the only one that is
     selected (in <span>tree order</span>). If the current <code>option</code>
-    element is the last <code>option</code> element descendent of the
+    element is the last <code>option</code> element descendant of the
     <code>select</code>, then the first <code>option</code> element
-    descendent must be selected instead.</p>
+    descendant must be selected instead.</p>
 
     <p>The <code
     title="dom-provider-setCellCheckedState">setCellCheckedState()</code>
@@ -38515,8 +38517,10 @@
      <li><code>input</code> elements to which the <code
      title="attr-input-readonly">readonly</code> attribute applies,
      but that are not <i title="concept-input-immutable">immutable</i>
-     (i.e. that do not have the attribute specified and that are not
-     <span title="concept-fe-disabled">disabled</span>)</li>
+     (i.e. that do not have the <code
+     title="attr-input-readonly">readonly</code> attribute specified
+     and that are not <span
+     title="concept-fe-disabled">disabled</span>)</li>
 
      <li><code>textarea</code> elements that do not have a <code
      title="attr-textarea-readonly">readonly</code> attribute, and
@@ -49401,6 +49405,205 @@
 
 
 
+  <h3>Spelling and grammar checking</h3>
+
+  <p>User agents can support the checking of spelling and grammar of
+  editable text, either in form controls (such as the value of
+  <code>textarea</code> elements), or in elements in an <span>editing
+  host</span> (using <code
+  title="attr-contenteditable">contenteditable</code>).</p>
+
+  <p>For each element, user agents must establish a <dfn
+  title="concept-spellcheck-default">default behavior</dfn>, either
+  through defaults or through preferences expressed by the user. There
+  are three possible default behaviors for each element:</p>
+
+  <dl>
+
+   <dt><dfn title="concept-spellcheck-default-true">true-by-default</dfn>
+
+   <dd>The element will be checked for spelling and grammar if its
+   contents are editable.
+
+   <dt><dfn title="concept-spellcheck-default-false">false-by-default</dfn>
+
+   <dd>The element will never be checked for spelling and grammar.
+
+   <dt><dfn title="concept-spellcheck-default-inherit">inherit-by-default</dfn>
+
+   <dd>The element's default behavior is the same asits parent
+   element's. Elements that have no parent element cannot have this as
+   their default behavior.
+
+  </dl>
+
+  <hr>
+
+  <p>The <dfn title="attr-spellcheck"><code>spellcheck</code></dfn>
+  attribute is an <span>enumerated attribute</span> whose keywords are
+  <code title="">true</code> and <code
+  title="">false</code>. The <code
+  title="">true</code> keyword map to the <i>true</i> state. The <code
+  title="">false</code> keyword maps to the <i>false</i> state. In
+  addition, there is a third state, the <i>inherit</i> state, which is
+  the <i>missing value default</i> (and the <i>invalid value
+  default</i>).</p>
+
+  <hr>
+
+  <p>The <dfn title="dom-spellcheck"><code>spellcheck</code></dfn> DOM
+  attribute, on getting, must return true if the element's <code
+  title="attr-spellcheck">spellcheck</code> content attribute is in
+  the <i>true</i> state, or if the element's <code
+  title="attr-spellcheck">spellcheck</code> content attribute is in
+  the <i>inherit</i> state and the element's <span
+  title="concept-spellcheck-default">default behavior</span> is <span
+  title="concept-spellcheck-default-true">true-by-default</span>, or
+  if the element's <code title="attr-spellcheck">spellcheck</code>
+  content attribute is in the <i>inherit</i> state and the element's
+  <span title="concept-spellcheck-default">default behavior</span> is
+  <span
+  title="concept-spellcheck-default-inherit">inherit-by-default</span>
+  and the element's parent element's <code
+  title="dom-spellcheck">spellcheck</code> DOM attribute would return
+  true; otherwise, if none of those conditions applies, then the
+  attribute must instead return false.</p>
+
+  <p class="note">The <code title="dom-spellcheck">spellcheck</code>
+  DOM attribute is not affected by user preferences that override the
+  <code title="attr-spellcheck">spellcheck</code> content attribute,
+  and therefore might not reflect the actual spellchecking state.</p>
+
+  <p>On setting, if the new value is true, then the element's <code
+  title="attr-spellcheck">spellcheck</code> content attribute must be
+  set to the literal string "<code title="">true</code>", otherwise it
+  must be set to the literal string "<code title="">false</code>".
+
+  <hr>
+
+  <p>User agents must only consider the following pieces of text as
+  checkable for the purposes of this feature:</p>
+
+  <ul>
+
+   <li>The value of <code>input</code> elements to which the <code
+   title="attr-input-readonly">readonly</code> attribute applies, but
+   that are not <i title="concept-input-immutable">immutable</i>
+   (i.e. that do not have the <code
+   title="attr-input-readonly">readonly</code> attribute specified and
+   that are not <span
+   title="concept-fe-disabled">disabled</span>).</li>
+
+   <li>The value of <code>textarea</code> elements that do not have a
+   <code title="attr-textarea-readonly">readonly</code> attribute and
+   that are not <span
+   title="concept-fe-disabled">disabled</span>.</li>
+
+   <li>Text in <span title="text node">text nodes</span> that are
+   children of <span>editable</span> elements.</li>
+
+   <li>Text in attributes of <span>editable</span> elements.</li>
+
+  </ul>
+
+  <p>For text that is part of a <span>text node</span>, the element
+  with which the text is associated is the element that is the
+  immediate parent of the first character of the word, sentence, or
+  other piece of text. For text in attributes, it is the attribute's
+  element. For the values of <code>input</code> and
+  <code>textarea</code> elements, it is the element itself.</p>
+
+  <p>To determine if a word, sentence, or other piece of text in an
+  applicable element (as defined above) is to have spelling- and/or
+  grammar-checking enabled, the UA must use the following
+  algorithm:</p>
+
+  <ol>
+
+   <!-- user override -->
+
+   <li>If the user has disabled the checking for this text, then the
+   checking is disabled.</li>
+
+   <li>Otherwise, if the user has forced the checking for this text to
+   always be enabled, then the checking is enabled.</li>
+
+   <!-- content attribute: on, off -->
+
+   <li>Otherwise, if the element with which the text is associated has
+   a <code title="attr-spellcheck">spellcheck</code> content
+   attribute, then: if that attribute is in the <i>true</i> state,
+   then checking is enabled; otherwise, if that attribute is in the
+   <i>false</i> state, then checking is disabled.</li>
+
+   <!-- inherit, if there is one to inherit from -->
+
+   <li>Otherwise, if there is an ancestor element with a <code
+   title="attr-spellcheck">spellcheck</code> content attribute that is
+   not in the <i>inherit</i> state, then: if the nearest such
+   ancestor's <code title="attr-spellcheck">spellcheck</code> content
+   attribute is in the <i>true</i> state, then checking is enabled;
+   otherwise, checking is disabled.</li>
+
+   <!-- default -->
+
+   <li>Otherwise, if the element's <span
+   title="concept-spellcheck-default">default behavior</span> is <span
+   title="concept-spellcheck-default-true">true-by-default</span>,
+   then checking is enabled.</li>
+
+   <li>Otherwise, if the element's <span
+   title="concept-spellcheck-default">default behavior</span> is <span
+   title="concept-spellcheck-default-false">false-by-default</span>,
+   then checking is disabled.</li>
+
+   <!-- default inheritance -->
+
+   <li>Otherwise, if the element's parent element has <em>its</em>
+   checking enabled, then checking is enabled.</li>
+
+   <li>Otherwise, checking is disabled.</li>
+
+  </ol>
+
+  <p>If the checking is enabled for a word/sentence/text, the user
+  agent should indicate spelling and/or grammar errors in that
+  text. User agents should take into account the other semantics given
+  in the document when suggesting spelling and grammar
+  corrections. User agents may use the language of the element to
+  determine what spelling and grammar rules to use, or may use the
+  user's preferred language settings. UAs should use
+  <code>input</code> element attributes such as <code
+  title="attr-input-pattern">pattern</code> to ensure that the
+  resulting value is valid, where possible.</p>
+
+  <p>If checking is disabled, the user agent should not indicate
+  spelling or grammar errors for that text.</p>
+
+  <div class="example">
+
+   <p>The element with ID "a" in the following example would be the
+   one used to determine if the word "Hello" is checked for spelling
+   errors. In this example, it would not be.</p>
+
+   <pre><div contenteditable="true">
+ <span spellcheck="false" id="a">Hell</span><em>o!</em>
+</div></pre>
+
+   <p>The element with ID "b" in the following example would have
+   checking enabled (the leading space character in the attribute's
+   value on the <code>input</code> element causes the attribute to be
+   ignored, so the ancestor's value is used instead, regardless of the
+   default).</p>
+
+   <pre><p spellcheck="true">
+ <label>Name: <input spellcheck=" false" id="b"></label>
+</p></pre>
+
+   </div>
+
+
+
   <h3 id="dnd"><dfn>Drag and drop</dfn></h3>
 
 <!--XXX
@@ -62266,7 +62469,7 @@
   "<code title="">center</code>", are expected to center text within
   themselves, as if they had their 'text-align' property set to
   'center' in a <span title="presentational hints">presentational
-  hint</span>, and to <span>align descendents</span> to the center.</p>
+  hint</span>, and to <span>align descendants</span> to the center.</p>
 
   <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
   <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62276,7 +62479,7 @@
   title="">left</code>", are expected to left-align text within
   themselves, as if they had their 'text-align' property set to 'left'
   in a <span title="presentational hints">presentational hint</span>,
-  and to <span>align descendents</span> to the left.</p>
+  and to <span>align descendants</span> to the left.</p>
 
   <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
   <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62286,7 +62489,7 @@
   title="">right</code>", are expected to right-align text within
   themselves, as if they had their 'text-align' property set to
   'right' in a <span title="presentational hints">presentational
-  hint</span>, and to <span>align descendents</span> to the right.</p>
+  hint</span>, and to <span>align descendants</span> to the right.</p>
 
   <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
   <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
@@ -62296,10 +62499,10 @@
   title="">justify</code>", are expected to full-justify text within
   themselves, as if they had their 'text-align' property set to
   'justify' in a <span title="presentational hints">presentational
-  hint</span>, and to <span>align descendents</span> to the left.</p>
+  hint</span>, and to <span>align descendants</span> to the left.</p>
 
-  <p>When a user agent is to <dfn>align descendents</dfn> of a node,
-  the user agent is expected to align only those descendents that have
+  <p>When a user agent is to <dfn>align descendants</dfn> of a node,
+  the user agent is expected to align only those descendants that have
   both their 'margin-left' and 'margin-right' properties computing to
   a value other than 'auto', that are over-constrained and that have
   one of those two margins with a used value forced to a greater




More information about the Commit-Watchers mailing list