hidden
属性すべてのHTML要素はhidden
コンテンツ属性設定を持ってもよい。hidden
属性は真偽属性である。要素で指定される場合、それは、要素がまだないこと、またはもはやページの現在の状態には直接関係がない、または、ユーザーが直接アクセスするのとは対照的に、ページの他の部分で再利用するコンテンツを宣言するために使用されていることを示す。User agents should not render elements that have the hidden
attribute specified. This requirement may be implemented indirectly through the style layer. For example, an HTML+CSS user agent could implement these requirements using the rules suggested in the Rendering section.
この属性は通常CSSを使用して実装されているため、CSSを使用して上書きすることもできる。たとえば、'display: block'をすべての要素に適用する規則は、hidden
属性の影響を相殺するだろう。したがって著者は、期待通りに属性がスタイル付けされていることを確認し、そのスタイルシートを書く際に注意する必要がある。
以下の骨格の例において、属性は、ユーザーがログインするまでウェブゲームのメイン画面を非表示にするために使用される:
<h1>The Example Game</h1> <section id="login"> <h2>Login</h2> <form> ... <!-- calls login() once the user's credentials have been checked --> </form> <script> function login() { // switch screens document.getElementById('login').hidden = true; document.getElementById('game').hidden = false; } </script> </section> <section id="game" hidden> ... </section>
hidden
属性は、別のプレゼンテーションに合法的に示すことができたコンテンツを隠すために使用されてはならない。たとえば、タブ付きインターフェースは単にオーバーフロープレゼンテーションの一種であるため、タブ付きダイアログでパネルを隠すためにhidden
を使用することは誤りである。―それはスクロールバーをもつ1つの大きなページ内のすべてのフォームコントロールを示すのと同様である。ちょうど1つのプレゼンテーションからコンテンツを非表示にするためにこの属性を使用することも同様に誤りである。―何かがhidden
とマークされる場合、それは、たとえばプリンタなどを含む、すべてのプレゼンテーションから隠されている。
自身がhidden
でない要素は、hidden
である要素へハイパーリンクされてはならない。自身がhidden
でないlabel
およびoutput
要素のfor
属性も同様に、hidden
である要素を参照してはならない。どちらの場合も、このような参照はユーザーの混乱を引き起こすだろう。
しかし、要素およびスクリプトは、他のコンテキストでhidden
である要素を参照してもよい。
たとえば、hidden
属性でマークされたセクションにリンクするhref
属性を使用するのは誤りだろう。コンテンツが適切または関連しない場合、それにリンクする理由はない。
しかし、自身がhidden
である説明を参照するために、ARIA aria-describedby
属性を使用することは構わないだろう。説明を非表示にすることはそれらが単独で有用でないことを意味する一方で、それらは、それらが説明する画像から参照される特定のコンテキストにおいて有用である方法で記述することもできる。
同様に、hidden
属性を持つcanvas
要素は、オフスクリーンバッファとしてスクリプト化されたグラフィックスエンジンによって使用されるかもしれず、フォームコントロールは、form
属性を使用する隠しform
要素を参照するかもしれない。
アクセシビリティーAPIは、デフォルトのビューで非表示としてマークする間構造化されたコンテンツを公開する方法を提供することを推奨する。このようなコンテンツは、支援技術(AT)またはメインストリームのユーザーエージェントを使用しているかどうか、任意の様式で、通常の文書フローでユーザーに知覚できるようにすべきでない。
このような機能が利用可能な際、このようなコンテンツがID参照または妥当なハッシュ名参照によって間接的に参照されるならば、適切な場合に、ユーザーエージェントは、ATにhidden
要素の完全なセマンティックを公開するためにそれらを使用してもよい。これは、通常のドキュメントフローに属するすべてのプレゼンテーションで隠されたコンテンツを維持しながら、ATが、ユーザーの要求に応じて、これらのhidden
要素の構造にアクセスできる。hidden
要素のユーザー起動の表示を防ぎたい著者は、そのような機構を持つ要素を参照すべきでない。
ATへそのようなコンテンツを公開する際に一部のユーザーエージェントは非表示コンテンツを平坦化しているので、著者は、平坦化する際に不可欠な意味を失うhidden
内容を参照すべきでない。
たとえば、hidden
属性でマークされたセクションにリンクするhref
属性を使用するのは誤りだろう。コンテンツが適切または関連しない場合、それにリンクする理由はない。
しかし、自身がhidden
である説明を参照するために、ARIA aria-describedby
属性を使用することは構わないだろう。説明を非表示にすることはそれらが単独で有用でないことを意味する一方で、それらは、それらが説明する画像から参照される特定のコンテキストにおいて有用である方法で記述することもできる。
同様に、hidden
属性を持つcanvas
要素は、オフスクリーンバッファとしてスクリプト化されたグラフィックスエンジンによって使用されるかもしれず、フォームコントロールは、form
属性を使用する隠しform
要素を参照するかもしれない。
hidden
属性によって非表示にされたセクション内の要素は依然としてアクティブである。たとえば、そのようなセクションでのスクリプトやフォームコントロールは、依然として実行および送信する。それらのプレゼンテーションのみがユーザーに変更される。
The hidden
IDL attribute must reflect
the content attribute of the same name.
(特に要素やテキストノード)あるノードは不活性としてマークできる。ノードが不活性であるとき、あたかもノードがユーザーインタラクションイベントを対象する目的のために不在であるかのように、ユーザーエージェントは動作しなければならず、テキスト検索ユーザーインターフェース(一般に"ページ内検索"として知られる)の目的に対してノードを無視してもよく、そのノード内のテキストの選択からユーザーを防いでもよい。しかし、ユーザーエージェントは、ユーザーが検索とテキスト選択に制限を上書きできるようにすべきである。
たとえば、body
の中央に位置する単一の不活性段落からなるページを考えてみる。ユーザーがbody
上から不活性段落へポインティングデバイスを移動させ、段落上をクリックする場合、mouseover
イベントは発火せず、mousemove
およびclick
イベントは段落よりむしろbody
要素で発火するだろう。
ノードが不活性である場合、ノードはまたフォーカス可能ではない。
Document
全体は、モーダルダイアログダイアログによってブロックされるsubjectとしてマークできる。Document
がそのようにマークされている一方で、subject要素およびその子孫を除いて、Document
内のすべてのノードは、不活性とマークされなければならない。(この段落で除外される要素は、さらに他の手段を介して不活性にマークすることができる。モーダルダイアログの一部であることは不活性とマークされることからノードを"守る"ことはない。)
一度に1つのみ要素がモーダルダイアログによってブロックされているとしてDocument
をマークすることができる。
click
()あたかも要素をクリックされたかのように動作する。
The click()
method must run synthetic click
activation steps on the element.
When an element is focused, key events received by the document must be targeted at that
element. There may be no element focused; when no element is focused, key events received by the
document must be targeted at the body element, if there is one, or else at the
Document
's root element, if there is one. If there is no root element, key events
must not be fired.
User agents may track focus for each browsing context or Document
individually, or may support only one focused element per top-level browsing context
— user agents should follow platform conventions in this regard.
Which elements within a top-level browsing context currently have focus must be independent of whether or not the top-level browsing context itself has the system focus.
When a child browsing context is focused, its browsing context container must also have focus.
When an element is focused, the element matches the CSS :focus
pseudo-class.
tabindex
属性tabindex
コンテンツ属性は、著者が、要素がフォーカスできることを仮定するかどうか、それが順次フォーカスナビゲーションを使用して到達することを仮定するかどうか、何がシーケンシャルフォーカスナビゲーションのための要素の相対的な順序になるかを制御できる。名前"tab index"は、フォーカス可能な要素を通してナビゲートする"tab"キーの一般的な使用方法から来ている。用語"tabbing"は、順次フォーカスナビゲーションを使用して到達することができるフォーカス可能な要素を前方に移動することを指す。
tabindex
属性が指定される場合、妥当な整数である値を持たなければならない。
Each element can have a tabindex focus flag set, as defined below. This flag is a factor that contributes towards determining whether an element is focusable, as described in the next section.
If the attribute is specified, it must be parsed using the rules for parsing integers. The attribute's values have the following meanings:
The user agent should follow platform conventions to determine if the element's tabindex focus flag is set and, if so, whether the element can be reached using sequential focus navigation, and if so, what its relative order should be.
Modulo platform conventions, it is suggested that for the following elements, the tabindex focus flag be set:
a
elements that have an href
attributelink
elements that have an href
attributebutton
elementsinput
elements whose type
attribute are
not in the Hidden stateselect
要素textarea
要素One valid reason to ignore the platform conventions and always allow an element to be focused (by setting its tabindex focus flag) would be if the user's only mechanism for activating an element is through a keyboard action that triggers the focused element.
The user agent must set the element's tabindex focus flag, but should not allow the element to be reached using sequential focus navigation.
One valid reason to ignore the requirement that sequential focus navigation not
allow the author to lead to the element would be if the user's only mechanism for moving the
focus is sequential focus navigation. For instance, a keyboard-only user would be unable to
click on a text field with a negative tabindex
, so that
user's user agent would be well justified in allowing the user to tab to the control
regardless.
The user agent must set the element's tabindex focus flag, should allow the element to be reached using sequential focus navigation, and should follow platform conventions to determine the element's relative order.
The user agent must set the element's tabindex focus flag, should allow the element to be reached using sequential focus navigation, and should place the element in the sequential focus navigation order so that it is:
tabindex
attribute has been omitted or whose value, when parsed, returns an error,tabindex
attribute has a value equal to or less than zero,tabindex
attribute has a value
greater than zero but less than the value of the tabindex
attribute on the element,tabindex
attribute has a value
equal to the value of the tabindex
attribute on the element
but that is earlier in the document in tree order than the element,tabindex
attribute has a value
equal to the value of the tabindex
attribute on the element
but that is later in the document in tree order than the element, andtabindex
attribute has a value
greater than the value of the tabindex
attribute on the
element.An element that has its tabindex focus flag set but does not otherwise have an activation behavior defined has an activation behavior that does nothing.
This means that an element that is only focusable because of its tabindex
attribute will fire a click
event in response to a non-mouse activation (e.g. hitting the "enter" key while the element is
focused).
The tabIndex
IDL attribute must
reflect the value of the tabindex
content
attribute. Its default value is 0 for elements that are focusable and −1 for elements that
are not focusable.
An element is focusable if all of the following conditions are met:
canvas
element that represents embedded
content.In addition, each shape that is generated for an area
element, any
user-agent-provided interface components of media elements
(e.g. a play button), and distinct user interface components of form controls (e.g. "up" and
"down" buttons on an <input type=number>
spin
control), should be focusable, unless platform conventions dictate otherwise or
unless their corresponding element is disabled. (A
single area
element can correspond to multiple shapes, since image maps can be reused
with multiple images on a page.)
Notwithstanding the above, user agents may make any element or part of an element focusable, especially to aid with accessibility or to better match platform conventions.
The focusing steps for an element are as follows:
If the element is not in a Document
, or if
the element's Document
has no browsing context, or if the element's
Document
's browsing context has no top-level browsing
context, or if the element is not focusable, or if the element is already
focused, then abort these steps.
If focusing the element will remove the focus from another element, then run the unfocusing steps for that element.
Make the element the currently focused element in its top-level browsing context.
Some elements, most notably area
, can correspond to more than one distinct
focusable area. If a particular area was indicated when the element was focused, then that is
the area that must get focus; otherwise, e.g. when using the focus()
method, the first such region in tree order is the one that
must be focused.
The user agent may apply relevant platform-specific conventions for focusing widgets.
For example, some platforms select the contents of a text field when that field is focused.
Fire a simple event named focus
at the element.
User agents must synchronously run the focusing steps for an element whenever the user moves the focus to a focusable element.
The unfocusing steps for an element are as follows:
If the element is an input
element, and the change
event applies to the element, and the element does not
have a defined activation behavior, and the user has changed the element's value or its list of selected files while the control was focused
without committing that change, then fire a simple event that bubbles named change
at the element.
Unfocus the element.
Fire a simple event named blur
at the element.
When an element that is focused stops being a focusable element, or stops being focused without another element being explicitly focused in its stead, the user agent should synchronously run the unfocusing steps for the affected element only.
For example, this might happen because the element is removed from its
Document
, or has a hidden
attribute added. It would
also happen to an input
element when the element gets disabled.
activeElement
現在フォーカスのある要素を返す。
hasFocus
()文書がフォーカスを持つ場合はtrueを返し、そうでなければfalseを返す。
focus
()ウィンドウをフォーカスする。このメソッドの使用は推奨されない。代わりに、ユーザーがウィンドウのフォーカスを制御できる。
blur
()ウィンドウをアンフォーカスする。このメソッドの使用は推奨されない。代わりに、ユーザーがウィンドウのフォーカスを制御できる。
The activeElement
attribute on
Document
objects must return the element in the document that is focused. If no
element in the Document
is focused, this must return the body
element.
When a child browsing context is focused, its browsing context
container is also focused, by definition. For
example, if the user moves the focus to a text field in an iframe
, the
iframe
is the element with focus in the parent browsing context.
The hasFocus()
method on
Document
objects must return true if the Document
's browsing
context is focused, and all its ancestor browsing
contexts are also focused, and the top-level browsing context has the
system focus. If the Document
has no browsing context or if its
browsing context has no top-level browsing context, then the method will
always return false.
The focus()
method on the Window
object, when invoked, provides a hint to the user agent that the script believes the user might be
interested in the contents of the browsing context of the Window
object
on which the method was invoked.
User agents are encouraged to have this focus()
method
trigger some kind of notification.
The blur()
method on the Window
object, when invoked, provides a hint to the user agent that the script believes the user probably
is not currently interested in the contents of the browsing context of the
Window
object on which the method was invoked, but that the contents might become
interesting again in the future.
User agents are encouraged to ignore calls to this blur()
method entirely.
Historically the focus()
and blur()
methods actually affected the system focus, but hostile
sites widely abuse this behavior to the user's detriment.
focus
()要素をフォーカスする。
blur
()要素をアンフォーカスする。このメソッドの使用は推奨されない。代わりに別の要素をフォーカスする。
フォーカスリングを非表示にするためにこの方法を使用してはならない。キーボードユーザーからフォーカスリングを隠して他の方法を使用してはならない。特に、'outline'プロパティーを上書きするためにCSS規則を使用してはならない。フォーカスリングの除去は、ナビゲートするおよびキーボードを使用してインタラクティブなコンテンツを操作するユーザーに対して重大なアクセシビリティーの問題をもたらす。
The focus()
method, when invoked, must run the
following algorithm:
If the element is marked as locked for focus, then abort these steps.
Mark the element as locked for focus.
Run the focusing steps for the element.
Unmark the element as locked for focus.
The blur()
method, when invoked, should run the
unfocusing steps for the element on which the method was called instead. User agents
may selectively or uniformly ignore calls to this method for usability reasons.
For example, if the blur()
method is unwisely
being used to remove the focus ring for aesthetics reasons, the page would become unusable by
keyboard users. Ignoring calls to this method would thus allow keyboard users to interact with the
page.
この節は非規範的である。
アクティブまたはフォーカスさせることができる各要素はaccesskey
属性を使用して、それをアクティブにするための単一のキーの組み合わせを割り当てることができる。
正確なショートカットは、ユーザーエージェントによって決定され、ユーザーのキーボードに関する情報に基づき、どのキーボードショートカットが既にプラットフォーム上に存在し、他にどのようなショートカットがページ上で指定され、ガイドとしてaccesskey
属性に提供された情報を使用する。
関連するキーボードショートカットが多種多様な入力デバイスで利用可能であることを確実にするために、著者はaccesskey
属性で多数の選択肢を提供できる。
各選択肢は、文字または数字のような、単一の文字で構成される。
ユーザーエージェントは、キーボードショートカットの一覧をユーザーに提供できるが、著者は行うことも推奨される。accessKeyLabel
IDL属性は、ユーザーエージェントによって割り当てられた実際のキーの組み合わせを表す文字列を返す。
この例において、著者はショートカットキーを使用して呼び出すことができるボタンを提供してきた。フルキーボードをサポートするために、著者は可能なキーとして"C"を提供している。テンキーのみを搭載したデバイスをサポートするために、著者は別の可能なキーとして"1"を提供している。
<input type=button value=Collect onclick="collect()" accesskey="C 1" id=c>
ショートカットキーが何であるかをユーザーに伝えるために、著者は明示的にボタンのラベルにキーの組み合わせを追加するために選択しているここでのこのスクリプトを持つ。
function addShortcutKeyLabel(button) { if (button.accessKeyLabel != '') button.value += ' (' + button.accessKeyLabel + ')'; } addShortcutKeyLabel(document.getElementById('c'));
異なるプラットフォーム上のブラウザは、たとえ同じキーの組み合わせであっても、そのプラットフォーム上で普及している規則に基づいて異なるラベルを表示する。たとえば、キーの組み合わせが、Controlキー、Shiftキー、および文字Cである場合、Macのブラウザが"^⇧C"を表示するかもしれない一方で、Windowsのブラウザは"Ctrl+Shift+C"を表示するかもしれない。一方でEmacsのブラウザは単に"C-C"を表示するかもしれない。同様に、キーの組み合わせがAltキーとEscキーである場合、Windowsは"Alt+Esc"を使用するかもしれず、Macは"⌥⎋"を使用するかもしれず、Emacsのブラウザは、"M-ESC"または"ESC ESC"を使用するかもしれない。
したがって、一般に、accessKeyLabel
IDL属性から返された値を解析しようとするのは賢明ではない。
accesskey
属性すべてのHTML要素は、accesskey
コンテンツ属性の設定を持ってもよい。accesskey
属性値は、要素をアクティブまたはフォーカスするキーボードショートカットを作成するためのガイドとして、ユーザーエージェントによって使用される。
指定される場合、値は大文字・小文字区別である一意なスペース区切りトークンの順序付き集合でなければならず、その各々が正確に1つのUnicodeコードポイントの長さでなければならない。
次の例において、サイトを熟知するキーボードユーザーがより迅速に関連するページに移動できるよう、さまざまなリンクがアクセスキーとともに与えられる:
<nav> <p> <a title="Consortium Activities" accesskey="A" href="/Consortium/activities">Activities</a> | <a title="Technical Reports and Recommendations" accesskey="T" href="/TR/">Technical Reports</a> | <a title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex">Site Index</a> | <a title="About This Site" accesskey="B" href="/Consortium/">About Consortium</a> | <a title="Contact Consortium" accesskey="C" href="/Consortium/contact">Contact</a> </p> </nav>
次の例において、検索フィールドは2つの可能なアクセスキー、"s"と"0"(この順番で)が与えられる。テンキー付きの小さなデバイス上のユーザーエージェントは単なる簡素なキー0を選ぶかもしれないが、フルキーボードを搭載したデバイスでのユーザーエージェントは、ショートカットキーとしてCtrl+Alt+Sを選ぶかもしれない:
<form action="/search"> <label>Search: <input type="search" name="q" accesskey="s 0"></label> <input type="submit"> </form>
次の例において、ボタンは説明可能なアクセスキーを持つ。このスクリプトは次に、ユーザーエージェントが選択したキーの組み合わせを通知するためにボタンのラベルの更新を試みる。
<input type=submit accesskey="N @ 1" value="Compose"> ... <script> function labelButton(button) { if (button.accessKeyLabel) button.value += ' (' + button.accessKeyLabel + ')'; } var inputs = document.getElementsByTagName('input'); for (var i = 0; i < inputs.length; i += 1) { if (inputs[i].type == "submit") labelButton(inputs[i]); } </script>
あるユーザーエージェントにおいて、ボタンのラベルは"Compose(⌘N)"になるかもしれない。別のものにおいて、これは"Compose(Alt+⇧+1)"になるかもしれない。ユーザーエージェントがキーを割り当てない場合、単に"Compose"になる。正確な文字列は割り当てられるアクセスキーが何であるか、およびどのようにユーザーエージェントがそのキーの組み合わせを表すかに依存する。
An element's assigned access key is a key combination derived from the element's
accesskey
content attribute. Initially, an element must not
have an assigned access key.
Whenever an element's accesskey
attribute is set, changed,
or removed, the user agent must update the element's assigned access key by running
the following steps:
If the element has no accesskey
attribute, then skip
to the fallback step below.
Otherwise, split the attribute's value on spaces, and let keys be the resulting tokens.
For each value in keys in turn, in the order the tokens appeared in the attribute's value, run the following substeps:
If the value is not a string exactly one Unicode code point in length, then skip the remainder of these steps for this value.
If the value does not correspond to a key on the system's keyboard, then skip the remainder of these steps for this value.
If the user agent can find a mix of zero or more modifier keys that, combined with the key that corresponds to the value given in the attribute, can be used as the access key, then the user agent may assign that combination of keys as the element's assigned access key and abort these steps.
Fallback: Optionally, the user agent may assign a key combination of its choosing as the element's assigned access key and then abort these steps.
If this step is reached, the element has no assigned access key.
Once a user agent has selected and assigned an access key for an element, the user agent should
not change the element's assigned access key unless the accesskey
content attribute is changed or the element is moved to
another Document
.
User agents might expose elements that have
an accesskey
attribute in other ways as well, e.g. in a menu
displayed in response to a specific key combination.
The accessKey
IDL attribute must
reflect the accesskey
content attribute.
The accessKeyLabel
IDL attribute must return
a string that represents the element's assigned access key, if any. If the element
does not have one, then the IDL attribute must return the empty string.
contenteditable
コンテンツ属性contenteditable
属性は、キーワードが空文字列、true
、おとびfalse
となる列挙属性である。空の文字列およびtrueキーワードは、true
状態に対応する。falseキーワードは、false
状態に対応する。さらに、inherit状態という第3の状態が存在する。これは欠落した値のデフォルト(および妥当でない値のデフォルト)である。
true状態は、要素が編集可能であることを示す。inherit状態は、その親が存在する場合、要素が編集可能であることを示す。false状態は、要素が編集可能でないことを示す。
contentEditable
[ = value ]contenteditable
属性の状態に基づいて、"true
"、"false
"、または"inherit
"を返す。
その状態を変更する設定が可能である。
新しい値がこれらの文字列のいずれかでない場合、SyntaxError
例外を投げる。
isContentEditable
要素が編集可能な場合にtrueを返す。そうでなければfalseを返す。
The contentEditable
IDL attribute, on
getting, must return the string "true
" if the content attribute is set to
the true state, "false
" if the content attribute is set to the false state,
and "inherit
" otherwise. On setting, if the new value is an ASCII
case-insensitive match for the string "inherit
" then the content
attribute must be removed, if the new value is an ASCII case-insensitive match for
the string "true
" then the content attribute must be set to the string
"true
", if the new value is an ASCII case-insensitive match for
the string "false
" then the content attribute must be set to the string
"false
", and otherwise the attribute setter must throw a
SyntaxError
exception.
The isContentEditable
IDL attribute, on
getting, must return true if the element is either an editing host or
editable, and false otherwise.
designMode
IDL属性Documents have a designMode
, which can be either enabled or
disabled.
designMode
[ = value ]文書が編集可能である場合に"on
"を返し、ない場合に"off
"を返す。
文書の現在の状態を変更する設定が可能である。これは、文書をフォーカスし、その文書で文書の選択をリセットする。
The designMode
IDL attribute on the
Document
object takes two values, "on
" and "off
". On setting, the new value must be compared in an ASCII
case-insensitive manner to these two values; if it matches the "on
"
value, then designMode
must be enabled, and if it
matches the "off
" value, then designMode
must be disabled. Other values must be
ignored.
On getting, if designMode
is enabled, the IDL
attribute must return the value "on
"; otherwise it is disabled, and the
attribute must return the value "off
".
The last state set must persist until the document is destroyed or the state is changed.
Initially, documents must have their designMode
disabled.
When the designMode
changes from being disabled to
being enabled, the user agent must synchronously reset the document's active range's
start and end boundary points to be at the start of the Document
and then run the
focusing steps for the root element of the Document
, if any.
著者は、もともと値'pre-wrap'へこれら編集のメカニズムを介して作成されたホストを編集およびマークアップ上の'white-space'プロパティーを設定するよう推奨する。デフォルトのHTML空白処理は、あまりWYSIWYG編集に向かず、そして'white-space'がデフォルト値のままである場合、いくつかのコーナーの場合において、行の折り返しは正しく動作しない。
デフォルト'normal'値が代わりに使用される場合に発生する問題の例として、単語の間に2つのスペース(ここでは"␣"によって表される)とともに、"yellow␣␣ball"と入力したユーザーの場合を考える。'white-space'のデフォルト値('normal')のための場所での編集規則ともに、結果のマークアップは、"yellow ball"または"yellow ball"のいずれかで構成される。すなわち、2つの単語間の非開票スペースに加えて、通常スペースが存在するだろう。'white-space'に対する'normal'値は共に相殺するために隣接する通常スペースを必要とするため、これは必要である。
前者の場合において、たとえ行の末尾で"yellow"単独で一致するとしても、"yellow⍽"は次の行("⍽"は非改行スペースを表すためにここで使用されている)に折り返す。後者の場合において、行の先頭に包まれる場合、"⍽ball"は非改行スペース由来の可視インデントを持つだろう。
しかし、'white-space'が'pre-wrap'に設定される場合、編集規則は、代わりに単に単語間に2つの通常のスペースを置き、2つの単語が行末で分割されるべきであり、スペースはレンダリングから削除されてきれいになる。
用語アクティブ範囲、編集ホスト、および編集可能の定義、編集ホストまたは編集可能である要素のユーザーインターフェース要件、execCommand()
、queryCommandEnabled()
、queryCommandIndeterm()
、queryCommandState()
、queryCommandSupported()
、およびqueryCommandValue()
メソッド、テキスト選択、および選択削除アルゴリズムは、HTML Editing API仕様で定義される。編集のインタラクションおよびユーザーエージェントでのアンドゥ/リドゥ機能は、UndoManagerおよびDOM Transaction仕様によって定義される。[EDITING] [UNDO]
User agents can support the checking of spelling and grammar of editable text, either in form
controls (such as the value of textarea
elements), or in elements in an editing
host (e.g. using contenteditable
).
For each element, user agents must establish a default behavior, either through defaults or through preferences expressed by the user. There are three possible default behaviors for each element:
spellcheck
属性は、キーワードが空文字列、true
およびfalse
となる列挙属性である。空の文字列およびtrueキーワードは、true
状態に対応する。falseキーワードは、false
状態に対応する。さらに、default状態という第3の状態が存在する。これは欠落した値のデフォルト(および妥当でない値のデフォルト)である。
true状態は、要素がそのスペルおよび文法チェックを持つことを示す。default状態は、以下で定義されるように、親要素の独自のspellcheck
状態におそらく基づいて、デフォルトの動作に応じて動作する要素であることを示す。false状態は、要素がチェックされないことを示す。
spellcheck
[ = value ]要素がスペルや文法チェックを持つ場合はtrueを返す。そうでなければfalseを返す。
デフォルトを上書きしてspellcheck
コンテンツ属性を設定するための、設定が可能である。
The spellcheck
IDL attribute, on getting, must
return true if the element's spellcheck
content attribute is
in the true state, or if the element's spellcheck
content attribute is in the default state and the element's default behavior is true-by-default, or if the element's spellcheck
content attribute is in the default state and the
element's default behavior is inherit-by-default and the element's parent
element's spellcheck
IDL attribute would return true;
otherwise, if none of those conditions applies, then the attribute must instead return false.
The spellcheck
IDL attribute is not affected
by user preferences that override the spellcheck
content
attribute, and therefore might not reflect the actual spellchecking state.
On setting, if the new value is true, then the element's spellcheck
content attribute must be set to the literal string
"true
", otherwise it must be set to the literal string "false
".
User agents must only consider the following pieces of text as checkable for the purposes of this feature:
input
elements whose type
attributes are in the Text, Search,
URL, or E-mail states and that are mutable (i.e. that do not have the readonly
attribute specified and that are not disabled).textarea
elements that do not
have a readonly
attribute and that are not disabled.Text
nodes that are children of editing
hosts or editable elements.For text that is part of a Text
node, 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 input
and textarea
elements, it is the element itself.
To determine if a word, sentence, or other piece of text in an applicable element (as defined above) is to have spelling- and grammar-checking enabled, the UA must use the following algorithm:
spellcheck
content attribute, then: if that attribute is in the
true state, then checking is enabled; otherwise, if that attribute is in the false
state, then checking is disabled.spellcheck
content attribute that is not in the default
state, then: if the nearest such ancestor's spellcheck
content attribute is in the true state, then checking is enabled; otherwise, checking is
disabled.If the checking is enabled for a word/sentence/text, the user agent should indicate spelling
and 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 input
element attributes such as pattern
to ensure that the resulting value is valid, where
possible.
If checking is disabled, the user agent should not indicate spelling or grammar errors for that text.
Even when checking is enabled, user agents may opt to not report spelling or grammar errors in text that the user agent deems the user has no interest in having checked (e.g. text that was already present when the page was loaded, or that the user did not type, or text in controls that the user has not focused, or in parts of e-mail addresses that the user agent is not confident were misspelt).
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.
<div contenteditable="true"> <span spellcheck="false" id="a">Hell</span><em>o!</em> </div>
The element with ID "b" in the following example would have checking enabled (the leading
space character in the attribute's value on the input
element causes the attribute
to be ignored, so the ancestor's value is used instead, regardless of the default).
<p spellcheck="true"> <label>Name: <input spellcheck=" false" id="b"></label> </p>
この仕様は、スペルや文法チェッカーに対するユーザーインターフェースを定義しない。ユーザーエージェントはオンデマンドチェックを提供するかもしれず、チェックが有効である間に連続的なチェックを実行するかもしれず、または他のインターフェースを使用するかもしれない。