Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This is draft documentation mapping HTML elements and attributes to accessibility API Roles, States and Properties on a variety of platforms. It provides recommendations on deriving the accessible names and descriptions for HTML elements. It also provides accessible feature implementation examples.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is subject to change without notice.
This document was published by the HTML Working Group as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All feedback is welcome.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. This document is informative only. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
To provide access to desktop GUI applications, assistive technologies originally used heuristic techniques to determine the meaning of the user interface and built an alternative off screen model. For example, a row of labels displayed horizontally near the top of an application window might be a menu. Labels with a border drawn around them might be buttons. Heuristic techniques are not always accurate, however, and require assistive technologies to be updated whenever the software application is updated.
A much better technique is for the software application to provide the necessary information for interoperability with assistive technology. To meet this need, platform owners have developed specialized interfaces, called accessibility APIs, which can be used to communicate accessibility information about user interfaces to assistive technologies.
In the case of static Web pages, the Document Object Model (DOM) is used to represent the structure and state of the elements in the document being rendered by a user agent. The elements of the document are organized into a hierarchy of nodes known as the DOM tree. For traditional static Web pages, assistive technologies, such as screen readers, interact with user agents using the DOM. For UI elements that are known to be interactive, such as HTML form elements and desktop applications, assistive technologies may use platform accessibility APIs.
Accessibility APIs covered by this document are:
If User Agent developers need to expose to other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.
HTML may have features that are not supported by accessibility APIs at the time of publication. There is not a one to one relationship between all features and platform accessibility APIs. When HTML roles, states and properties do not directly map to an accessibility API, and there is a method in the API to expose a text string, expose the undefined role, states and properties via that method.
IAccessible2 and ATK use object attributes to expose semantics that are not directly supported in the APIs. Object attributes are name-value pairs that are loosely specified, and very flexible for exposing things where there is no specific interface in an accessibility API. For example, at this time, the HTML5 header element can be exposed via an object attribute because accessibility APIs have no such role available.
For accessibility APIs that do not have "object attributes" per se, it is useful to find a similar mechanism or develop a new interface to expose name/value pairs. Under the Mac OS X Accessibility Protocol, all getters are already simply name-value pairs and it is possible to expose new semantics whenever necessary. Keep in mind, this also requires working with the assistive technology developers to gain support for the new semantics.
Notes:
HTML element | HTML4 | HTML5 | WAI-ARIA | MSAA Role | IAccessible2 | UIA | AT-SPI Role | Mac Accessibility role AX |
---|---|---|---|---|---|---|---|---|
a element that represents a hyperlink |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | HyperLink | ROLE_LINK | AXLink |
a element (with no href) |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
abbr element |
yes | yes | none | ROLE_SYSTEM_STATICTEXT | IA2_ROLE_TEXT_FRAME + Object attribute role="abbr" | Text | Object attribute role="abbr" | AXStaticText, AXRoleDescription"abbr" |
address element |
yes | yes | none | ROLE_SYSTEM_GROUPING | Object attribute role="address" | ? | Object attribute role="address" | AXGroup, AXRoleDescription"address" |
area element that represents a hyperlink |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | HyperLink | ROLE_LINK | AXLink |
area element that has no href attribute |
yes | yes | none | ROLE_SYSTEM_TEXT | ROLE_SYSTEM_TEXT | Text | ROLE_TEXT | AXStaticText |
article element |
no | yes | article role |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Object attribute role="article" | Expose as text string "article" in AriaRole | ROLE_DOCUMENT_FRAME + do not expose STATE_EDITABLE | AXGroup, AXRoleDescription"article" |
aside element |
no | yes | complementary role |
ROLE_SYSTEM_GROUPING | Object attribute role="complementary" | Expose as text string "complementary" in AriaRole | Object attribute role="complementary" | AXGroup, AXRoleDescription="complementary" |
audio element |
no | yes | none | ? | ? | ? | ? | ? |
b element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
base element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
bdo element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | text | ROLE_TEXT | AXStaticText |
blockquote element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ? | ? | ? | ? |
body element |
yes | yes | document role |
ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Document | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXGroup, AXRoleDescription="document" |
br element |
yes | yes | none | ROLE_SYSTEM_ WHITESPACE | ROLE_SYSTEM_ WHITESPACE | ? | ? | ? |
button element |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON. | ROLE_SYSTEM_PUSHBUTTON. | Button | ROLE_PUSH_BUTTON | AXButton |
canvas element |
no | yes | none | ? | ? | ? | ROLE_GRAPHIC + STATE_ANIMATED. | ? |
caption element |
yes | yes | none | ROLE_SYSTEM_ TEXT | IA2_ROLE_CAPTION | text | ROLE_CAPTION | AXStaticText |
cite element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | text | ROLE_TEXT | AXStaticText |
code element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | text | ROLE_TEXT | AXStaticText |
col |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING? | ? | ? | ? |
colgroup element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING? | ? | ? | ? |
command element |
no | yes | menuitem role |
ROLE_SYSTEM_MENUITEM | ROLE_SYSTEM_MENUITEM | MenuItem | ROLE_MENU_ITEM
|
AXMenuItem |
datalist element |
no | yes | listbox role, with the aria-multiselectable property set to "false" |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | Combobox | ROLE_COMBO_BOX + STATE_EXPANDABLE | AXComboBox |
dd element |
yes | yes | none | ROLE_SYSTEM_ TEXT | IA2_ROLE_PARAGRAPH | ? | ? | ? |
del element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
details element |
no | yes | none |
ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | Group | ROLE_PANEL | AXGroup |
dfn element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
dl element |
yes | yes | none | ROLE_SYSTEM_ TEXT | IA2_ROLE_PARAGRAPH | ? | ? | ? |
dt element |
yes | yes | none | ROLE_SYSTEM_ TEXT | IA2_ROLE_PARAGRAPH | ? | ? | ? |
div element |
yes | yes | none | ROLE_SYSTEM_GROUPING | IA2_ROLE_SECTION | ? | ? | ? |
em element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
embed element |
no | yes | none | ROLE_SYSTEM_CLIENT | ROLE_SYSTEM_CLIENT | ? | ROLE_EMBEDDED | ? |
fieldset element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | Group | ROLE_PANEL |
AXGroup, AXRoleDescription="fieldset" |
figcaption element |
no | yes | none | ROLE_SYSTEM_ TEXT | IA2_ROLE_CAPTION | ROLE_CAPTION | AXRoleDescription="figcaption" | |
figure element |
no | yes | none | ROLE_SYSTEM_GROUPING | ? | ? | ? | AXGroup, AXRoleDescription="figure" |
footer element |
no | yes | none | ROLE_SYSTEM_GROUPING | Object attribute role="footer" | Expose as text string "footer" in UIAutomationType_String | Object attribute role="footer" | AXGroup, AXRoleDescription="footer" |
form element |
yes | yes | form role |
ROLE_SYSTEM_GROUPING | IA2_ROLE_FORM | Group | ROLE_PANEL | AXGroup |
frame element |
yes | no | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Document | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXGroup, AXRoleDescription="document" | |
frameset element |
yes | no | ? | ? | ? | ? | ? | |
head element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
header element |
no | yes | none | ROLE_SYSTEM_GROUPING | Object attribute role="header" | Expose as text string "header" in UIAutomationType_String | Object attribute role="header" | AXGroup, AXRoleDescription="header" |
hgroup element |
no | yes | none |
ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | AXGroup, AXRoleDescription="hgroup" | ||
h1 to h6 element that does have an hgroup ancestor |
no | yes | none |
ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
h1 to h6 element that does not have an hgroup ancestor |
yes | yes | heading role, with the aria-level property set to the element's outline depth |
ROLE_SYSTEM_TEXT or use xml-roles | IA2_ROLE_HEADING Use the IAccessible2::attributes heading-level attribute to determine the heading level. | Text | ROLE_HEADING | AXHeading |
hr element |
yes | yes | separator role |
ROLE_SYSTEM_SEPARATOR | ROLE_SYSTEM_SEPARATOR | Separator | ROLE_SEPARATOR | AXSplitter |
HTML element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
i element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
iframe element |
yes | yes | none | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY | Document | ROLE_DOCUMENT_FRAME + STATE_READONLY | AXGroup, AXRoleDescription="document" |
img element |
yes | yes | img role |
ROLE_SYSTEM_GRAPHIC | ROLE_SYSTEM_GRAPHIC | Image | ROLE_IMAGE | AXImage |
img element whose alt attribute's value is empty |
yes | yes | presentation role |
Do not expose this object |
Do not expose this object | Do not expose this object | Do not expose this object |
AXRoleDescription="presentation" |
input element with a type attribute in the Button state |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_PUSH_BUTTON | AXButton |
input element with a type attribute in the Color state | no | yes | checkbox role, with the aria-checked state set to "mixed" if the element's indeterminate IDL attribute is true, or "true" if the element's checkedness is true, or "false" otherwise |
NONE | IA2_ROLE_COLOR_CHOOSER | NONE | ROLE_COLOR_CHOOSER | AXColorWell |
input element with a type attribute in the Checkbox state |
yes | yes | none | ROLE_SYSTEM_CHECKBUTTON | Object attribute checkable="true" | Checkbox | ROLE_CHECK_BOX + STATE_CHECKED | AXCheckBox |
input element with a type attribute in the Date state |
no | yes | none | ROLE_SYSTEM_DROPLIST | IA2_ROLE_DATE_EDITOR | Calendar | ROLE_CALENDAR (not supported by FF) | AXDateField |
input element with a type attribute in the Date and Time state |
no | yes | none | ROLE_SYSTEM_DROPLIST | IA2_ROLE_DATE_EDITOR | Calendar | ROLE_CALENDAR (not supported by FF) | AXDateField |
input element with a type attribute in the Local Date and Time state |
no | yes | none | ROLE_SYSTEM_DROPLIST | IA2_ROLE_DATE_EDITOR | Calendar | ROLE_CALENDAR (not supported by FF) | AXDateField |
input element with a type attribute in the E-mail state with no suggestions source element |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Edit | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea |
input element with a type attribute in the File Upload state |
yes | yes | none | ROLE_SYSTEM_PUSHBUTTON. | IA2_ROLE_FILE_CHOOSER | Button | ROLE_PUSH_BUTTON + ROLE_FILE_CHOOSER | AXButton |
input element with a type attribute in the Hidden state |
yes | yes | none | Do not expose this object |
Do not expose this object | Do not expose this object | Do not expose this object |
AXRoleDescription="presentation" |
input element with a type attribute in the Image Button state |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON. | ROLE_SYSTEM_PUSHBUTTON. | Button | ROLE_PUSH_BUTTON | AXButton |
input element with a type attribute in the Month state |
no | yes | none | ROLE_SYSTEM_DROPLIST | IA2_ROLE_DATE_EDITOR | Calendar | ? | AXDateField |
input element with a type attribute in the Number state |
no | yes | spinbutton role |
ROLE_SYSTEM_SPINBUTTON | ROLE_SYSTEM_SPINBUTTON | Spinner | ROLE_SPIN_BUTTON | AXIncrementor |
input element with a type attribute in the Password state |
yes | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Edit | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea AXSubrole: AXSecureTextField |
input element with a type attribute in the Radio Button state |
yes | yes | radio role, with the aria-checked state set to "true" if the element's checkedness is true, or "false" otherwise |
ROLE_SYSTEM_RADIOBUTTON | ROLE_SYSTEM_RADIOBUTTON | RadioButton | ROLE_RADIO_BUTTON | AXRadioButton |
input element with a type attribute in the Range state |
no | yes | slider role |
ROLE_SYSTEM_SLIDER | ROLE_SYSTEM_SLIDER | Slider | ROLE_SLIDER | AXSlider |
input element with a type attribute in the Reset Button state |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_PUSH_BUTTON | AXButton |
input element with a type attribute in the Search state with no suggestions source element |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Document | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea AXSubRole:AXSearchField
|
input element with a type attribute in the Submit Button state |
yes | yes | button role |
ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | Button | ROLE_PUSH_BUTTON | AXButton |
input element with a type attribute in the Telephone state with no suggestions source element |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Document | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea |
input element with a type attribute in the Text state with no suggestions source element |
yes | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Document | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea |
input element with a type attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element |
no | yes | combobox role, with the aria-owns property set to the same value as the list attribute |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP | Combobox | ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" | AXComboBox |
input element with a type attribute in the Time state |
no | yes | none | ROLE_SYSTEM_SPINBUTTON | ROLE_SYSTEM_SPINBUTTON | Spinner | ROLE_SPIN_BUTTON | AXTimeField |
input element with a type attribute in the URL state with no suggestions source element |
no | yes | textbox role |
ROLE_SYSTEM_TEXT | IA2_STATE_SINGLE_LINE | Document | ROLE_ENTRY + STATE_SINGLE_LINE | AXTextArea |
input element with a type attribute in the Week state |
no | yes | none | ROLE_SYSTEM_DROPLIST | IA2_ROLE_DATE_EDITOR | Calendar | ROLE_CALENDAR | AXDateField |
ins element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
kbd element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
keygen element |
no | yes | none | ? | ? | ? | ? | AXComboBox |
label element |
yes | yes | none | ROLE_SYSTEM_TEXT | IA2_ROLE_LABEL | ? | ROLE_LABEL | AXStaticText |
li element whose parent is an ol or ul element |
yes | yes | listitem role |
ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ListItem | ROLE_LISTITEM + do not expose STATE_EDITABLE | AXGroup |
li element whose parent is a menu element |
no | yes | listitem role |
ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY | ListItem | ROLE_LISTITEM + do not expose STATE_EDITABLE | AXMenuItemRole |
link element |
yes | yes | link role |
ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. | HyperLink | ROLE_LINK | AXLink |
map element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
mark |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
menu element with a type attribute in the context menu state |
no | yes | no role | ROLE_SYSTEM_MENUPOPUP | see msaa | Menu | ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu | AXMenu |
menu element with a type attribute in the list state |
no | yes | menu role |
ROLE_SYSTEM_MENUPOPUP | see msaa | Menu | ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu | AXMenu |
menu element with a type attribute in the toolbar state |
no | yes | toolbar role |
ROLE_SYSTEM_TOOLBAR | ROLE_SYSTEM_TOOLBAR | ToolBar | ROLE_TOOL_BAR | AXToolbar |
An element that defines a command, whose Type facet is "checkbox", and that is a descendant of a menu element whose type attribute in the list state |
no | yes | menuitemcheckbox role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise |
ROLE_SYSTEM_CHECKBUTTON or ROLE_SYSTEM_MENUITEM | IA2_ROLE_CHECK_MENU_ITEM + object attribute checkable="true" | Checkbox | ROLE_CHECK_MENU_ITEM + object attribute checkable="true" | AXMenuItemRole |
An element that defines a command, whose Type facet is "command", and that is a descendant of a menu element whose type attribute in the list state |
no | yes | menuitem role |
ROLE_SYSTEM_MENUITEM | ROLE_SYSTEM_MENUITEM | MenuItem | ROLE_MENU_ITEM | AXMenuItemRole |
An element that defines a command, whose Type facet is "radio", and that is a descendant of a menu element whose type attribute in the list state |
no | yes | menuitemradio role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise |
ROLE_SYSTEM_RADIOBUTTON or ROLE_SYSTEM_MENUITEM | IA2_ROLE_RADIO_MENU_ITEM + object attribute checkable="true" | RadioButton | ROLE_RADIO_MENU_ITEM + object attribute checkable="true" | AXMenuItemRole |
meta element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
meter element | no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
nav element |
no | yes | navigation role |
ROLE_SYSTEM_GROUPING | Object attribute role="navigation" | Expose as text string "complementary" in AriaRole | AXGroup, AXRoleDescription="navigation" | |
noscript element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
object element |
yes | yes | no role | depends on format of data file. examples include document, client, graphic and unknown (tested using object test suite). | Refer to MSAA | depends on format of data file. | ROLE_EMBEDDED | depends on format of data file. |
ol element |
yes | yes | list role |
ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | List | ROLE_LIST + do not expose STATE_EDITABLE | AXList |
optgroup element |
yes | yes | group role |
ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ? | ROLE_PANEL | AXGroup |
option element that is in a list of options or that represents a suggestion in a datalist element |
no | yes | option role, with the aria-selected state set to "true" if the element's selectedness is true, or "false" otherwise. |
ROLE_SYSTEM_LISTITEM | ROLE_SYSTEM_LISTITEM | ListItem | ROLE_LIST_ITEM | NSAccessibilityStaticTextRole |
output element |
no | yes | status role |
ROLE_SYSTEM_STATUSBAR | ROLE_SYSTEM_STATUSBAR | StatusBar | ROLE_STATUSBAR | AXGroup, AXRoleDescription="status" |
p element |
yes | yes | none | ROLE_SYSTEM_TEXT | IA2_ROLE_PARAGRAPH | Text | ROLE_PARAGRAPH | AXStaticText, AXRoleDescription="paragraph" |
param element |
yes | yes | none | N/A |
N/A | N/A | N/A |
N/A |
pre element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
progress element |
no | yes | progressbar role, with, if the progress bar is determinate, the aria-valuemax property set to the maximum value of the progress bar, the aria-valuemin property set to zero, and the aria-valuenow property set to the current value of the progress bar |
ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY | ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY | ProgressBar | ROLE_PROGRESS_BAR + do not expose EXTENDED_STATE_EDITABLE | AXProgressIndicator |
q element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
rp element |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
rt element |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
ruby element |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
s element |
? | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
samp element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
script element |
yes | yes | none | N/A | N/A | N/A | N/A | N/A |
section element |
no | yes | region role |
ROLE_SYSTEM_PANE | IA2_ROLE_SECTION | Pane | ROLE_PANEL | AXGroup, AXRoleDescription="region" |
select
element with a
multiple
attribute |
yes | yes | listbox role, with the aria-multiselectable property set to "true" |
ROLE_SYSTEM_LIST + |
ROLE_SYSTEM_LIST + STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY |
list | ROLE_LIST + STATE_MULTISELECTABLE | ? |
select element with no multiple attribute |
yes | yes | listbox role, with the aria-multiselectable property set to "false" |
ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. | Combobox | ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" | AXComboBox |
small element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
source element |
no | yes | none | Do not expose this object |
Do not expose this object | Do not expose this object | Do not expose this object |
AXRoleDescription="presentation" |
span element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
strong element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
style element |
yes | yes | none | Do not expose this object |
Do not expose this object | Do not expose this object | Do not expose this object |
AXRoleDescription="presentation" |
sub element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | Text | ROLE_TEXT | AXStaticText |
summary element |
no | yes | none | ROLE_SYSTEM_PUSHBUTTON | ROLE_SYSTEM_PUSHBUTTON | ? | ROLE_PUSHBUTTON + |
AXDisclosureTriangle |
sup element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
table element |
yes | yes | none | ROLE_SYSTEM_TABLE | Use IAccessibleTable2 interface | DataGrid | ROLE_TABLE | AXTable |
tbody element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ? | AXGroup, AXRoleDescription="table body" | |
td element |
yes | yes | none | ROLE_SYSTEM_CELL | ROLE_SYSTEM_CELL | DataItem | ROLE_TABLE_CELL | AXCell |
textarea element | yes | yes | textbox role, with the aria-multiline property set to "true" | ROLE_SYSTEM_TEXT | state: IA2_STATE_MULTI_LINE |
text | ROLE_ENTRY | AXTextArea |
tfoot element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ? | ROLE_PANEL | AXGroup, AXRoleDescription="table footer" |
th element that is neither a column header nor a row header |
yes | yes | none | ROLE_SYSTEM_CELL | ROLE_SYSTEM_CELL | IUIAutomation TableItem Pattern | ROLE_TABLE_CELL | AXCell |
th element that is a column header |
yes | yes | none | ROLE_SYSTEM_COLUMNHEADER | header + OrientationType_Vertical | ROLE_COLUMN_HEADER | AXCell | |
th element that is a row header |
yes | yes | none | ROLE_SYSTEM_ROWHEADER | header + OrientationType_Horizontal | ROLE_ROW_HEADER | AXCell | |
thead element |
yes | yes | none | ROLE_SYSTEM_GROUPING | ROLE_SYSTEM_GROUPING | ? | ROLE_PANEL | AXGroup, AXRoleDescription="table header" |
time element |
no | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
title element |
yes | yes | none | N/A |
N/A | N/A | N/A |
N/A |
tr element |
yes | yes | none | ROLE_SYSTEM_ROW | ROLE_SYSTEM_ROW | DataItem | ROLE_LIST_ITEM | AXRow |
ul element |
yes | yes | list role |
ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY | List | ROLE_LIST + do not expose STATE_EDITABLE | AXList |
var element |
yes | yes | none | ROLE_SYSTEM_ TEXT | ROLE_SYSTEM_ TEXT | ? | ROLE_TEXT | AXStaticText |
video element |
no | yes | none | ? | ? | ? | ? | ? |
wbr element |
no | yes | none | none | none | none | none | none |
Attribute | Element(s) | HTML4 | HTML5 | WAI-ARIA | MSAA Property or MSAA State | IAccessible2 | UIA | AT-SPI States and properties | AX | comments |
---|---|---|---|---|---|---|---|---|---|---|
accesskey | HTML elements | Yes | Yes | none | accKeyboardShortcut | accKeyboardShortcut | AcceleratorKey | ? | ? | |
alt | area; img; input | Yes | Yes | none | accName | Name | RELATION_LABEL_FOR | AXDescription | ||
autocomplete | form; input | No | Yes | Object attribute autocomplete
Expose the IA2_STATE_SUPPORTS_AUTOCOMPLETION equivalent state |
Object attribute autocomplete
Expose the STATE_SUPPORTS_AUTOCOMPLETION equivalent state |
|||||
autofocus | button; input; keygen; select; textarea | No | Yes | |||||||
autoplay | audio; video | No | Yes | |||||||
checked (if present) | command; input | Yes | Yes | aria-checked (state)="true" (state) | Set the STATE_SYSTEM_CHECKED state | Expose object attribute checkable="true" | Expose as ToggleState property in Toggle Control Pattern | Expose object attribute checkable="true" | AXValue="1" | |
checked (if absent) | command; input | Yes | Yes | aria-checked (state)="false" | Clear the STATE_SYSTEM_CHECKED state | Expose object attribute checkable="true" | Expose as ToggleState property in Toggle Control Pattern. | Expose object attribute checkable="true" | AXValue="0" | |
cite | blockquote; del; ins; q | Yes | Yes | |||||||
cols | textarea | Yes | Yes | |||||||
colspan | td; th | Yes | Yes | |||||||
contenteditable | HTML elements | No | Yes | |||||||
contextmenu | HTML elements | No | Yes | aria-haspopup="true" | Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. | Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. | Expose state of the pop-up activities in the ExpandCollapseState property in the ExpandCollapse Control Pattern. | Object attribute haspopup="true" | Expose AXShowMenu and AXPress actions | |
controls | audio; video | No | Yes | |||||||
datetime | del; ins | No | Yes | |||||||
datetime | time | No | Yes | |||||||
dir | HTML elements | ? | Yes | |||||||
dirname | input; textarea | ? | Yes | |||||||
disabled | button; command; fieldset; input; keygen; optgroup; option; select; textarea | yes | Yes | |||||||
draggable | HTML elements | no | Yes | |||||||
dropzone | HTML elements | no | Yes | |||||||
headers | td; th | yes | Yes | |||||||
hidden | HTML elements | no | Yes | |||||||
high | meter | no | Yes | |||||||
href | a; area | yes | Yes | |||||||
href | link | yes | Yes | |||||||
hreflang | a; area; link | yes | Yes | |||||||
kind | track | no | Yes | |||||||
label | command; menu; optgroup; option; track | ? | Yes | |||||||
lang | HTML elements | yes | Yes | |||||||
low | meter | no | Yes | |||||||
max | input | no | Yes | |||||||
max | meter; progress | no | Yes | |||||||
maxlength | input; textarea | yes | Yes | |||||||
media | a; area; link; source; style | ? | Yes | |||||||
min | input | Yes | ||||||||
min | meter | no | Yes | |||||||
multiple | input; select | yes | Yes | |||||||
open | details | no | Yes | aria-expanded="true | false" | STATE_SYSTEM_
EXPANDED STATE_SYSTEM_COLLAPSED |
STATE_SYSTEM_EXPANDED STATE_SYSTEM_COLLAPSED |
ExpandCollapsePattern | STATE_COLLAPSED STATE_EXPANDED |
AXValue="0 | 1" | Set properties on the summary element. |
optimum | meter | no | Yes | |||||||
placeholder | input; textarea | no | Yes | |||||||
poster | video | no | Yes | |||||||
radiogroup | command | no | Yes | |||||||
readonly | input; textarea | yes | Yes | |||||||
rel | a; area; link | Yes | ||||||||
required | input; select; textarea | no | Yes | aria-required |
N/A | IA2_STATE_REQUIRED |
Expose as IsrequiredForForm property. |
Expose STATE_REQUIRED |
? | ? |
reversed | ol | ? | Yes | |||||||
rows | textarea | yes | Yes | |||||||
rowspan | td; th | yes | Yes | |||||||
spellcheck | HTML elements | no | Yes | |||||||
scope | th | yes | Yes | |||||||
size | input; select | yes | Yes | |||||||
span | col; colgroup | yes | Yes | |||||||
start | ol | Yes | ||||||||
summary | table | yes | Yes | |||||||
title | HTML elements | yes | Yes | |||||||
title | abbr; dfn | yes | Yes | |||||||
title | command | no | Yes | |||||||
title | link | yes | Yes | |||||||
title | link; style | yes | Yes | |||||||
type | a; area; link | Yes | ||||||||
type | button | Yes | Yes | |||||||
type | button; input | Yes | Yes | |||||||
type | command | No | Yes | |||||||
type | embed; object; script; source; style | Yes | Yes | |||||||
type | menu | No | Yes | |||||||
value | button; option | Yes | Yes | |||||||
value | input | Yes | Yes | |||||||
value | li | Yes | ||||||||
value | meter; progress | No | Yes | |||||||
value | param | Yes | Yes | |||||||
width | canvas; embed; iframe; img; input; object; video | Yes | Yes |
The terms accessible name and accessible description are properties provided in all accessibility APIs. The name of the properties may differ across APIs but they serve the same function: as a container for a short (name) or longer (description) string of text.
Input type="text"
or textarea
element If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise, the accessible name is derived from the following sources; non-empty placeholder
attribute, non-empty associated label
element or a non-empty title
attribute.
The accessible description is derived from the following sources; non-empty placeholder
attribute or a non-empty title
attribute.
placeholder
attribute, use the content of the placeholder
attribute as the control's accessible name.placeholder
attribute and a non-empty associated label
element, use the content of the associated label
element as the control's accessible name. Use the content of the placeholder
attribute as the control's accessible description.placeholder
attribute and a non-empty title
attribute, use the content of the title
attribute as the control's accessible name. Use the content of the placeholder
attribute as the control's accessible description.placeholder
attribute and a non-empty title
attribute and associated non-empty label
element, use the content of the label
element as the control's accessible name. Use the content of the title
attribute concatenated with the content of the placeholder
attribute as the control's accessible description.placeholder
attribute or a non-empty associated label
element or a non-empty title
attribute, the control's accessible name is an empty string and the control's accessible description is an empty string. If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty value
attribute, or a non-empty title
attribute.
value
attribute or a non-empty title
attribute the control's accessible name is an empty string and the control's accessible description is an empty string.value
attribute, but not a non-empty title
attribute, use the content of value
attribute as the control's accessible name.title
attribute, but not a non-empty value
attribute, use the content of title
attribute as the control's accessible name.value
attribute, and a non-empty title
attribute, use the content of value
attribute as the control's accessible name. Use the content of the title
attribute as the control's accessible description.If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty alt
attribute, or a non-empty title
attribute.
alt
attribute or a non-empty title
attribute the control's accessible name is an empty string and the control's accessible description is an empty string.alt
attribute, but not a non-empty title
attribute, use the content of alt
attribute as the control's accessible name.title
attribute, but not a non-empty alt
attribute, use the content of title
attribute as the control's accessible name.alt
attribute, and a non-empty title
attribute, use the content of alt
attribute as the control's accessible name. Use the content of the title
attribute as the control's accessible description.If the control has an aria-label
or an aria-labelledby
attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.
Otherwise the accessible name is derived from the following sources; a non-empty associated label
element or a non-empty title
attribute.
label
element or a non-empty title
attribute the control's accessible name is an empty string and the control's accessible description is an empty string.label
element, but not a non-empty title
attribute, use the content of the associated label
element as the control's accessible name.title
attribute, but not a non-empty associated label
element, use the content of the title
attribute as the control's accessible name.label
element and a non-empty title
attribute, use the content of the associated label
element as the control's accessible name. Use the content of the title
attribute as the control's accessible description.to do
summary
and details
elementsto do
to do
summary
and details
elementsThe summary
element should be focusable by default.
The details
element should not focusable by default.
Pressing the spacebar key when the summary
element has focus will show the details
element content if the content is hidden. If the details
element content is showing and the summary
element has focus, pressing the spacebar key will hide the details element content.
The summary
element should be mapped to a disclosure triangle role in accessibility APIs that have such a role. For example the Mac accessibility API includes the AXDisclosureTriangle
role. In accessibility APIs that do not have such a fine grained role, the summary element should be mapped to a button
role. The role mapping table contains recommended mappings for the summary element.
The accessible name for the summary element is the text content of the summary element.
When the details element content is hidden, the state of the content should be reflected by an accessible state or property. For example, in the Mac accessibility API on the summary
element (AXDisclosureTriangle
), set AXValue
property to 0. When the details element content is showing on the summary
element (AXDisclosureTriangle
), set the AXValue
property to 1. The hidden and showing states of the details element is reflected by the absence or presence of the open attribute.
No normative references.
No informative references.