コマンド
4.11.5 コマンド
コマンドとは、メニュー項目やボタンやリンクの背後にある抽象概念のことです。
コマンドは、次に挙げるファセットを持つものとして定義されます。
- Type
- コマンドの種類:"command" は、一般的なコマンドであることを意味します。"radio" は、他と同じですが、とりわけ、そのコマンドが起動されると、Checked 状態が true にセットされることを意味します(別のコマンドでチェックを外すかもしれません)。"checkbox" は、他と同じですが、とりわけ、そのコマンドが起動されると、Checked 状態の値が切り替えられることを意味します。
- ID
- コマンドの名前で、そのコマンドをマークアップやスクリプトから参照するために使います。コマンドに ID がなければ、それを無名コマンドといいます。
- Label
- ユーザーに見せるコマンド名です。
- Hint
- ユーザーに見せる説明文です。
- Icon
- 該当のアクションを表すグラフィック・イメージを指定する絶対 URL です。コマンドはアイコンを持たない場合があります。
- Access Key
- コマンドを起動するユーザーエージェントによって選択されるキー・コンビネーションです。コマンドはアクセスキーを持たない場合があります。
- Hidden 状態
- 該当のコマンドを隠すかどうかを表します(基本的には、メニューに表示するかどうかを表すものです)。
- Disabled 状態
- 該当のコマンドが関連性があるのかどうか、そのコマンドが起動可能かどうかを表します。
- Checked 状態
- 該当のコマンドがチェックされているのかどうかを表します。
- Action
- 該当のコマンドの起動によって及ぼす実際の効果です。これは、スクリプトのイベント・ハンドラや、ナビゲート先の URL や、フォーム・サブミッションが考えられます。
これらのファセットは、要素上で、コマンド API を使ってアクセスすることができます。
- element .
commandType -
コマンドの Type ファセットにアクセスできます。
- element .
id -
コマンドの ID ファセットにアクセスできます。
- element .
label -
コマンドの Label ファセットにアクセスできます。
- element .
title -
コマンドの Hint ファセットにアクセスできます。
- element .
icon -
コマンドの Icon ファセットにアクセスできます。
- element .
accessKeyLabel -
コマンドの Access Key ファセットにアクセスできます。
- element .
hidden -
該当の要素の
hidden属性の状態にアクセスできます。これは、一般的には、該当のコマンドの Hidden 状態ファセットと同じです。labelとlegend要素(accesskey属性と組み合わせて使った場合)では、Hidden 状態ファセットは、他の要素(割当アクセス・キーが起動したもの)からもたらされ、該当の要素から直接的にアクセスできません。 - element .
disabled -
コマンドの Disabled 状態 ファセットにアクセスできます。
- element .
checked -
コマンドの Checked 状態 ファセットにアクセスできます。
- element .
click() -
コマンドのアクションを起動します。
commandType 属性は、値が "command", "radio", "checked" のいずれかとなる文字列を返さなければいけません。これは、要素によって定義されたコマンドの Type が、それぞれ、"command", "radio", "checked" かどうかに依存します。要素がコマンドを定義しないなら、null を返さなければいけません。
label 属性は、コマンドの Label を返さなければいけません。要素がコマンドを定義しない、もしくは、Label を指定しないなら、null を返さなければいけません。この属性は、さまざまな要素の label IDL 属性と連動するでしょう。
icon 属性は、コマンドの Icon の絶対 URL を返さなければいけません。要素がアイコンを指定しない、もしくは、要素がコマンドを定義しないなら、この属性は null を返さなければいけません。この属性は、command 要素の icon IDL 属性と連動するでしょう。
disabled 属性は、コマンドの Disabled 状態が、そのコマンドは無効だと表しているなら、true を返さなければいけません。そのコマンドが無効でないなら、false を返さなければいけません。この属性は、コマンドの Hidden 状態によって影響を受けることはありません。要素がコマンドを定義しないなら、この属性は false を返さなければいけません。この属性は、さまざまな要素における disabled IDL 属性と連動するでしょう。
checked 属性は、コマンドの Checked 状態が、そのコマンドはチェックされていることを表しているなら、true を返さなければいけません。そのコマンドがチェックされていないなら、false を返さなければいけません。要素がコマンドを定義しないなら、この属性は false を返さなければいけません。この属性は、input, command 要素の checked IDL 属性と連動するでしょう。
ID ファセットは、id IDL 属性を通してアクセスできます。 Hint ファセットは、title IDL 属性を通してアクセスできます。AccessKey ファセットは、accessKeyLabel IDL 属性を通してアクセスできます。そして、Hidden
状態ファセットは、hidden IDL 属性を通してアクセスできます。
- document .
commands -
コマンドが定義され、かつ、ID を持った
Document内の要素のHTMLCollectionを返します。
ドキュメントの HTMLDocument インタフェースの commands 属性は、Document ノードをルートとする HTMLCollection を返さなければいけません。そのフィルタは、コマンドが定義され、ID を持った要素だけに一致します。
ユーザーエージェントは、Hidden 状態ファセットが false (表示可)であるコマンドを表示することができます。例えば、ユーザーエージェントのメニューバーの中などです。ユーザーエージェントは、特に Access Key を持つコマンドに対しては、それらのキーをユーザーに通知する方法として、これが推奨されます。
4.11.5.1 a 要素を使ってコマンドを定義する
コマンドの Type は "command" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、この要素の textContent IDL 属性から得られる文字列となります。
コマンドの Hint は、この要素の title 属性の値となります。この属性が存在しなければ、Hint は空文字列となります。
コマンドの Icon は、この要素の子孫の最初の img 要素の src 属性の値を、その要素に対して解決して得られた絶対 URL となります。ただし、そのような要素が存在し、その属性の解決が成功した場合に限ります。そうでなければ、このコマンドの Icon はありません。
コマンドの AccessKey は、この要素の割当アクセスキーがあれば、それになります。
コマンドの Hidden 状態は、この要素が hidden 属性を持つなら、true(非表示)となります。そうでなければ false となります。
コマンドの Disabled 状態 ファセットは、常に false です。(このコマンドは常に有効です)
コマンドの Checked 状態 は、常に false です。(このコマンドは決してチェックされることはありません)
コマンドの Action は、この要素で click イベントを発出することとなります。
4.11.5.2 button 要素を使ってコマンドを定義する
コマンドの Type, ID, Label, Hint, Icon, Access Key, Hidden 状態, Checked 状態, Action ファセットは、a 要素と同じように決定されます(前の節をご覧ください)。
コマンドの Disabled 状態は、ボタンの disabled 状態を反映します。
4.11.5.3 input 要素を使ってコマンドを定義する
type 属性が Submit Button, Reset Button, Image Button, Button, Radio Button, Checkbox 状態のどれかひとつにある input 要素は、コマンドを定義します。
コマンドの Type は、type 属性が Radio
Button 状態にあるなら、"checkbox" となり、type 属性が Checkbox 状態にあるなら、"checkbox" となり、いずれでもなければ "command" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、コマンドの Type に依存します:
Type が "command" なら、それは、value 属性があれば、それによって与えられる文字列となります。なければ、ユーザーエージェントがボタンをラベルするために使う ユーザーエージェント依存でロケール依存の値となります。
以上のいずれでもなければ、Type は "radio" または "checkbox" です。この要素がラベル付きコントロールなら、ラベル付きコントロールが該当の要素となる label 要素のうち、ツリー順で最初の label 要素の textContent が、Label となります(DOM でいえば、これは element.labels[0].textContent によって与えられる文字列のことです)。そうでなければ、その value 属性の値があれば、それが Label となります。そうでなければ、その Label は空文字列となります。
コマンドの Hint は、input 要素の title 属性の値となります。この属性が存在しなければ、Hint は空文字列となります。
この要素の type 属性が Image Button 状態にあり、この要素が src 属性を持ち、その属性の値が、その要素に対して、問題なく解決できるなら、このコマンドの Icon は、その属性を解決して得られた絶対 URL となります。そうでなければ、このコマンドの Icon はありません。
コマンドの AccessKey は、この要素に割当アクセスキーがあれば、それになります。
コマンドの Hidden 状態は、この要素が hidden 属性を持っていれば、true(非表示)となり、なければ false となります。
コマンドの Disabled 状態 は、このコントロールの disabled 状態を反映します。
コマンドの Checked 状態 は、このコマンドの Type が "radio" または "checkbox" で、この要素が checked 状態にあるなら、true となり、そうでなければ false となります。
このコマンドの Action は、この要素にアクティベーション・ビヘイビアが定義されているなら、 この要素で疑似 click アクティベーション手順を実行することになります。そうでなければ、この要素で click イベントを発出するだけです。
4.11.5.4 option 要素を使ってコマンドを定義する
祖先に select 要素を持ち、かつ、value 属性がない、もしくは、value 属性の値が空文字列でない、のいずれかとなる option 要素は、コマンドを定義します。
コマンドの Type は、option 要素の直近の祖先にあたる select が multiple 属性を持たなければ、"radio" となります。持っていれば、"checkbox" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、option 要素の label 属性があれば、その値となります。なければ、option 要素の textContent IDL 属性の値となります。
コマンドの Hint は、この要素に title 属性があれば、それによって与えられる文字列となります。なければ、空文字列となります。
このコマンドに、Icon はありません。
コマンドの AccessKey は、この要素に割当アクセスキーがあれば、それになります。
コマンドの Hidden 状態は、この要素が hidden 属性を持っていれば、true(非表示)となり、なければ false となります。
コマンドの Disabled
状態 は、この要素が無効、または、直近の祖先の select 要素が無効なら、true(無効)となります。そうでなければ、false となります。
コマンドの Checked 状態は、この要素の 選択状態 が true なら、true(チェック済み)となり、そうでなければ、false となります。
コマンドの Action は、その Type に依存します。このコマンドの Type が "radio" なら、それは、option 要素を選択しなければいけません。そうでなければ、それは、option 要素を切り替えなければいけません。
4.11.5.5 command 要素を使ってコマンドを定義する
コマンドの Type は、command の type 属性が "radio" なら、"radio" となります。この属性の値が "checkbox" なら、"checkbox" となります。いずれでもなければ "command" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、この要素の label 属性があれば、その値となります。なければ、空文字列となります。
コマンドの Hint は、この要素に title 属性があれば、それによって与えられる文字列となります。なければ、空文字列となります。
コマンドの Icon は、この要素が icon 属性を持ち、その属性の値が、その要素に対して、問題なく解決できるなら、その属性を解決して得られる絶対 URL となります。そうでなければ、このコマンドの Icon はありません。
コマンドの AccessKey は、この要素に割当アクセスキーがあれば、それになります。
コマンドの Hidden 状態は、この要素が hidden 属性を持っていれば、true(非表示)となり、なければ false となります。
コマンドの Disabled
状態 は、この要素が disabled 属性を持つなら、true(無効)となります。そうでなければ、false となります。
コマンドの Checked 状態は、この要素が checked 属性を持つなら、true(チェック済み)となり、そうでなければ false となります。
コマンドの Action は、この要素にアクティベーション・ビヘイビアが定義されているなら、この要素で疑似クリック・アクティベーション手順を実行することとなります。そうでなければ、この要素で click イベントを発出するだけです。
4.11.5.6 label 要素の accesskey 属性を使ってコマンドを定義する
割当アクセスキーとラベル付きコントロールを持ち、ラベル付きコントロールがコマンドを定義する label 要素は、それ自身でコマンドを定義します。
コマンドの Type は、"command" です。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、この要素の textContent IDL 属性から得られる文字列となります。
コマンドの Hint は、この要素の title 属性の値となります。
このコマンドに、Icon はありません。
コマンドの AccessKey は、この要素の割当アクセスキーとなります。
コマンドの Hidden 状態, Disabled 状態, Action ファセットは、この要素のラベル付きコントロールの対応するファセットと同じとなります。
コマンドの Checked 状態は、常に false となります。(このコマンドは決してチェックされることはありません)
4.11.5.7 legend 要素の accesskey 属性を使ってコマンドを定義する
次の条件のいずれも満たす legend 要素は、それ自身でコマンドを定義します。割当アクセスキーを持ち、かつ、legend 要素の子孫ではなく、そして、label 要素でも legend 要素でもないけれども、コマンドを定義する子孫を持つ fieldset 要素の子となる legend 要素。
コマンドの Type は "command" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、この要素の textContent IDL 属性から得られる文字列となります。
コマンドの Hint は、この要素の title 属性の値となります。
このコマンドに、Icon はありません。
コマンドの AccessKey は、この要素の割当アクセスキーとなります。
コマンドの Hidden 状態, Disabled 状態, Action ファセットは、コマンドを定義するけれども、legend 要素の子孫ではなく、labelでも legend でもない要素のうち、ツリー順で最初の要素の対応するファセットと同じになります。
コマンドの Checked 状態は、常に false となります。(このコマンドは決してチェックされることはありません)
4.11.5.8 他の要素の accesskey 属性を使ってコマンドを定義する
コマンドを定義する要素を定義する前述の節のいずれかで、この要素がコマンドを定義すると定義するなら、その節が、この要素に適用されます。この節ではありません。そうでなければ、この節がその要素に適用されます。
コマンドの Type は "command" となります。
コマンドの ID は、この要素に id 属性が存在し、その値が空でなければ、その値となります。そうでなければ、このコマンドは無名コマンドとなります。
コマンドの Label は、この要素に依存します。この要素がラベル付きコントロールなら、ラベル付きコントロールが該当の要素となる label 要素のうち、ツリー順で最初の label 要素の textContent が、Label となります(DOM でいえば、これは element.labels[0].textContent によって与えられる文字列のことです)。そうでなければ、Label は、この要素それ自身の textContent となります。
コマンドの Hint は、この要素の title 属性の値となります。この属性が存在しなければ、Hint は空文字列となります。
このコマンドに、Icon はありません。
コマンドの AccessKey は、この要素の割当アクセスキーとなります。
コマンドの Hidden 状態は、この要素が hidden 属性を持っていれば、true(非表示)となり、なければ false となります。
コマンドの Disabled 状態 は、常に false となります。(このコマンドは常に有効です)
コマンドの Checked 状態は、常に false となります。(このコマンドは決してチェックされることはありません)
このコマンドの Action は、次の手順を実行することになります:
- この要素がフォーカス可能なら、この要素に対してフォーカス手順を実行します。
- この要素にアクティベーション・ビヘイビアが定義されているなら、この要素で疑似クリック・アクティベーション手順します。
- そうでなければ、この要素にアクティベーション・ビヘイビアが定義されていないなら、この要素で
clickイベントを発出します。
※ 原文:http://www.w3.org/TR/2011/WD-html5-20110525/commands.html#commands