command 要素

4.11.3 command 要素

カテゴリー
メタデータ・コンテンツ
フロー・コンテンツ
フレージング・コンテンツ
この要素を使うことができるコンテキスト:
メタデータ・コンテンツが期待される場所
フレージング・コンテンツが期待される場所
コンテンツモデル:
コンテンツ属性:
グローバル属性
type
label
icon
disabled
checked
radiogroup
また、この要素では、title 属性が特別なセマンティクスを持ちます。
DOMインタフェース:
interface HTMLCommandElement : HTMLElement {
           attribute DOMString type;
           attribute DOMString label;
           attribute DOMString icon;
           attribute boolean disabled;
           attribute boolean checked;
           attribute DOMString radiogroup;
};

command 要素は、ユーザーが呼び出すことができるコマンドを表します。

コマンドは、menu 要素を使って、コンテキスト・メニューやツールバーの一部にしたり、ページのどこかに入れて、キーボード・ショートカットを定義することができます。

type 属性はコマンドの種類を表します。関連アクションを伴う通常のコマンドや、切替(トグル)可能な状態や選択肢や、項目リストからの単一選択のいずれかです。

この属性は、3つのキーワードと状態を伴う列挙属性です。キーワード "command" は、Command 状態に相当し、"checkbox" は Checkbox 状態に、そして "radio" は Radio 状態に相当します。値がない場合、そのデフォルト値は、Command 状態です。

Command 状態

この要素は、関連アクションを伴う通常のコマンドを表します。

Checkbox 状態

この要素は、切替(トグル)可能な状態や選択肢を表します。

Radio 状態

この要素は、項目リストからの単一選択を表します。

label 属性はそのコマンドの名前を与えるもので、ユーザーに表示されます。label 属性は必須で、空文字列ではない値を指定しなければいけません。

title 属性はそのコマンドを説明するヒントを与えるもので、ユーザーを支援するために表示することができます。

icon 属性は、そのコマンドを表す図を与えます。この属性を指定する場合、この属性の値は 潜在的にスペースで囲まれた空文字列でない妥当な URLでなければいけません。空文字列でなければ、アイコンの絶対 URL を取得するために、この属性値はその要素に対して解決されなければいけません。この属性がなければ、または、その値が空文字列なら、または、その値の解決に失敗したら、アイコンは無いということになります。

disabled 属性は論理属性です。この属性が指定された場合は、該当のコマンドは現状では利用できないことを表します。

disabled 属性と hidden 属性の違いは微妙で捕らえにくいものです。コマンドが、同じコンテキスト内で特定の状況に変更された場合にのみでしか有効にできないのであれば、disabled となるでしょう。コマンドが、その状況において、該当の命令が決して有効となることがないのであれば、hidden としてマークされるでしょう。例えば、蛇口を示すコンテキストメニューで、"open" という命令は、すでに蛇口が開いていれば、disabled となるでしょう。しかし、"eat" という命令は hidden としてマークされるでしょう。蛇口を食べることは絶対にできないのですから。

checked 属性は論理属性です。この属性が指定された場合は、該当のコマンドが選択されたということを表します。この属性は、type 属性が Checkbox 状態か Radio 状態のいずれかでない限り、省略されなければいけません。

radiogroup 属性は、コマンドのグループの名前を与えるものです。コマンドのグループとは、type 属性の値が "radio" であるコマンドに対して、そのコマンドそのものが切り替えられるときに選ばれるものです。その名前の範囲は、親要素の子要素リストです。この属性は、type 属性が Radio 状態でない限り、省略されなければいけません。

type IDL 属性は、 同じ名前のコンテンツ属性を反映しなければいけません。ただし、既知の値に限られます

label, icon, disabled, checked, radiogroup IDL 属性は、同じ名前の対応するコンテンツ属性を反映しなければいけません。

この要素のアクティベーション・ビヘイビアは、次の通り、この要素の type 属性の値に依存します:

type 属性が Checkbox 状態にある場合

この要素が checked 属性を持っているなら、ユーザーエージェントはその属性を削除しなければいけません。そうでなければ、ユーザーエージェントは checked 属性を追加しなければいけません。その値はリテラル値 checked です。そして、ユーザーエージェントは、その要素で click イベントを発出しなければいけません。

type 属性が Radio 状態にある場合

この要素が親を持つなら、ユーザーエージェントは、その親要素の子ノードのリストを走査しなければいけません。そして、そのうち command 要素となる各ノードに対して、radiogroup 属性を持ち、その値が現在の要素の値と完全一致し(それらが空文字であるかのように、radiogroup 属性が無かったものとして扱います)、checked 属性を持つなら、その属性を削除しなければいけません。

それから、この要素の checked 属性にリテラル値 checked がセットされなければいけません。ユーザーエージェントは、この要素で click イベントを発出しなければいけません。

いずれでもなければ

この要素にはアクティベーション・ビヘイビアがありません。

この要素で疑似 click イベントが発出されても、前述のアクションが発生することは一切ありません。

command 要素は、menu要素の一部を形成しない限り、レンダリングされません。

これは、3 つのボタンを持ったツールバーの例です。ユーザーに左寄せ、センタリング、右寄せのいずれかを選択させます。テキスト・エディタにあるようなツールバーをイメージすることができるでしょう。このツールバーは、さらに、セパレータと、それに続いて、 "Publish" とラベル付けされたボタンをもう一つ持ちます。しかし、そのボタンは無効になっています。

<menu type="toolbar">
 <command type="radio" radiogroup="alignment" checked="checked"
          label="Left" icon="icons/alL.png" onclick="setAlign('left')">
 <command type="radio" radiogroup="alignment"
          label="Center" icon="icons/alC.png" onclick="setAlign('center')">
 <command type="radio" radiogroup="alignment"
          label="Right" icon="icons/alR.png" onclick="setAlign('right')">
 <hr>
 <command type="command" disabled
          label="Publish" icon="icons/pub.png" onclick="publish()">
</menu>

※ 原文:http://www.w3.org/TR/2011/WD-html5-20110525/interactive-elements.html#the-command-element