Copyright © 2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use, and software licensing rules apply.
Dynamic web content, like graphical user interfaces is required to maintain state information. This is realized through the use of declarative state information implied in form elements such as focus, invalid, and enabled. This state information is limited to forms and in some cases anchors. Traditional accessibility architecture includes state information capable of addressing the state of GUI elements found on a traditional desktop. Authors of dynamic web content are accustomed to creating widgets that appear like desktop components but are implemented using combinations: of HTML or XHTML flexible constructs such as DIVs, SPANs; style sheets; and JavaScript to generate user interface changes in response to user interaction. All accessibility frameworks today use state information to provide alternative access solutions, such as a screen reader, in much the same way we need the state information to render content with different style sheet properties. In order to provide true access, this information must be provided in a standard way to allow for for interoperability.
This working draft:
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.
This document is the first Working Draft of this specification. It should in no way be considered stable, and should not be normatively referenced for any purposes whatsoever. This version includes an early implementation of Meta State Information. This document is a deliverable in the Dynamic Web Content Task Force Roadmap for addressing web content accessibility. This document does not address state Change events which need to be generated to maintain interoperability with the assistive technology. That issue will be worked independently of the evolution of this specification as will other elements of the roadmap. Those issues should, of course, be resolved as quickly as possible, and the resolution will be reflected in a future draft. Finally, the working group has started to resolve many of the issues that have been submitted by the public. If your particular issue has not yet been addressed, please be patient - there are many issues, and some are more complex than others.
The information provided by the declarative states in forms is incomplete in its ability to support accessibility. JavaScript is used on over 50% of all web sites today. JavaScript authors create content which consists largely of custom UI widgets constructed from existing HTML widgets. These widgets may appear as tree widgets, pop-up windows, or even more complex widgets such as a spreadsheet. In the case of a Tree widget there is no mechanism to convey state information as to whether an expandable list is collapsed or expanded. Figure 1.0 illustrates the need for state information as part of the total solution needed by adaptive technology.
It is essential that the author be allowed to provide semantic state meta data in these widgets to adaptive technology through the combination of author supplied state properties and declarative state attributes stored by the user agent.
In short, HTML needs a mechanism for dynamic web content to allow
the author and user agent to provide state information
encompassing the possible semantic state information provided by the
accessibility API on each operating system platform.
This document has been produced by the W3C HTML Working Group (members only) as part of the W3C HTML Activity. The goals of the HTML Working Group are discussed in the HTML Working Group charter.
Public discussion of XHTML takes place on www-html@w3.org (archive). To subscribe send an email to www-html-request@w3.org with the word subscribe in the subject line.
Please report errors in this document to www-html-editor@w3.org (archive).
At the time of publication, the Working Group believed there were no
patent disclosures relevant to this specification. A current list of
patent disclosures relevant to this specification may be
found on the Working
Group's patent disclosure page.
This section is informative.
State meta information is used by applications and assistive
technologies to used to determine the state of UI widgets. In the case
of a web page it may be declarative as a function of particular
elements or it may be an attribute which is configurable by the page
author. In the case of a tree widget, it is important to know whether a
tree element is expanded or collapsed. This is important for the web
application generating the widget and for an assistive technology, such
as a screen reader, wishing to provide an alternative rendering. Figure
1.0 illustrates state information as part of the entire accessibility
contract
Figure 1.0 Accessibility Interoperability at a DOM Node
This section is informative.
While some terms are defined in place, the following definitions are used throughout this document. Familiarity with the W3C XML 1.0 Recommendation [XML] is highly recommended.
Need to support | Availability in Standard Markup today | Applicability | User Agent mapping |
---|---|---|---|
expanded Definition: indicates if the children of the element are expanded such as in a tree widget. values: true, false |
HTML,
XHTML 1.0-1.1 |
If set to false : MSAA:STATE_SYSTEM_COLLAPSED ATK: ATK_STATE_EXPANDABLE If set to true: MSAA:STATE_SYSTEM_EXPANDED ATK:ATK_STATE_EXPANDED *Should the user agent map this to true when it's children are not hidden and expandable=true? |
|
disabled Definition: When set a widget, this boolean attribute disables the widget for user input. values: true |
Limited to HTML form input tags |
HTML, XHTML 1.0-1.1 |
MSAA:STATE_SYSTEM_UNAVAILABLE Should also remove element from tab order, make it not focusable, change appearance (grayed out, etc.), and prevent it from being interacted with. |
focusable
values: "traverse", "nontraverse" traverse: Means navigable through the keyboard tabbing or
navigation sequencing
mechanism. The presence of TABINDEX on an element indicates that
focusable="traverse" nontraverse: Means not navigable. Should be accessible through
some access key mechanism. |
MSAA:STATE_SYSTEM_FOCUSABLE For the actual state user agent must provide this information through the DOM or some specialized API. |
||
hidden Definition: The author has asked that this element and its children are hidden from view. The element is and its children are programmatically hidden. For example, menu items are programmatically hidden until a user activates the menu. Value: true |
Currently provided through a
style sheet: style="display:none" Defined in XForms by a lack of binding. |
HTML, XHTML
1.0-1.1 |
MSAA: STATE_SYSTEM_INVISIBLE: true if hidden=true; Otherwise false ATK: ATK_STATE_VISIBLE : false if hidden=true. Otherwise false Elements with this state should not be made available to users. |
invalid
An element which lacks data validity semantics is neither :valid nor :invalid. the bound instance data constraints. An element which lacks data validity semantics is neither :valid nor :invalid. This is different from an element which otherwise has no constraints. Such an element would always be valid.
|
Provided in XForms today. |
HTML, XHTML 1.0-1.1 |
ATK:ATK_STATE_INVALID For the actual state user agent must provide this information
through the DOM or some specialized API.
Additionally,
assistive technologies should extend their API to support the reasons
why elements are invalid as is done by XForms. |
moveable Definition: Indicates that the element may be moved. values: "true" |
|
HTML, XHTML
1.0-1.1 XForms: UI elements |
MSAA:STATE_SYSTEM_MOVEABLE Non-Windows systems: Should be made available through the DOM or a specialized API. User agent should provide a mechanism for moving the item
through the
keyboard, mouse, or programmatically to address device independence. |
multiple Definition: This means that that a container element manages the selection of multiple descendants based on user input. values: "true" |
html: <select
multiple="true"> XForms: <select>, <repeat> |
HTML, XHTML
1.0-1.1 Multiselectable applies to container elements of selectable descendant elements. This could be done with scripting using the following: |
MSAA:STATE_SYSTEM_EXTSELECTABLE ATK:ATK_STATE_MULTISELECTABLE |
optional Definition: An element is optional if the value for it is not required and the data it manages is used to enter forms data. An element which is not used to enter data into a form is neither required or optional. values: "true" |
Provided in XForms today. (based on data model) | HTML, XHTML
1.0-1.1 Non-Form elements may be used to inject form data. XForms: This attribute is not applicable to XForms. This is determined from the XForms model. |
MSAA, ATK - There is no mapping.
Note: While optional could be combined with required this is
kept to be consistent with CSS3 pseudo classes and XForms. |
readonly Definition: If false, it specifies that the element may not be modified by the user. If false, this is a read-write element. Elements without this attribute are considered readonly unless overriden by the user agent such as in the case of designmode. values:"true", "false" |
HTML: readonly="true" for form elements Provided in XForms today. (based on data model) |
HTML, XHTML
1.0-1.1 Non-Form elements may be used to inject form data. XForms: This attribute is not applicable to XForms. This is determined from the XForms model. |
MSAA:STATE_SYSTEM_READONLY The user agent should not allow value to be changed in the case that this is set to true on an element. |
required Definition: An element is required if it the value for it is required and the data it manages is used to enter forms data. Otherwise it is not required. An element which is not used to enter data into a form is neither required or optional. values: "true" |
XForms
(based
on data model) |
HTML, XHTML 1.0-1.1 Non-Form elements may be used to inject form data. XForms: This attribute is not applicable to XForms. This is determined from the XForms model. |
MSAA,ATK - There is no mapping.
Note: While optional could be combined with required this is kept to be consistent with CSS3 pseudo classes and XForms. |
resizeable Definition: Indicates that the element may be resized. This is important for alternative input solutons values: "true" |
HTML, XHTML
1.0-1.1 XForms: UI elements |
MSAA:STATE_SYSTEM_SIZEABLE ATK:ATK_STATE_RESIZEABLE User agent should provide a mechanism for resizing the item through the keyboard, mouse, or programmatically to address device independence. |
|
secret Definition: Indicates that the value should not be echoed as it is entered. values: "true" |
XForms: see
<secret> |
HTML, XHTML
1.0-1.1 |
MSAA:STATE_SYSTEM_PROTECTED ATK:ATK_STATE_SECRET |
selected Definition: This means that this element is a descendant of a container element which manages its selection and it is selected by the user. values: "true" |
applies to HTML Form element
<option> XForms: N/A |
HTML, XHTML
1.0-1.1 Non-Form elements may be used to inject form data. XForms: This attribute is not applicable to XForms. |
MSAA:STATE_SYSTEM_SELECTED ATK:ATK_STATE_SELECTED |
selectable Definition: This means that this element is a descendant of a container element which manages its selection and it is selectable by the user. values: "true" |
applies to HTML Form element
<option> XForms: see selectable |
HTML, XHTML
1.0-1.1 Non-Form elements may be used to inject form data. |
MSAA:STATE_SYSTEM_SELECTABLE ATK:ATK_STATE_SELECTABLE |
selfvoicing Definition: Indicates the object tag represents a self-voicing application meaning that it will speak without an assistive technology. values: true |
HTML, XHTML
1.0-1.1 |
MSAA:STATE_SYSTEM_SELFVOICING ATK: Recommend adding to ATK. |
|
unknown Definition: This is the indeterminate state of a tri-state widget. This is used for progress meters or checkboxes. values:true |
Through value="unknown" for role="checkbox" or role="progressmeter" |
ATK:indeterminate and MSAA:mixed | |
value Definition: This is the data value for the element when used to store state information. Such as "unknown" for a checkbox implementation. values: string |
*We need to determine the XForms mapping as it relates to precision and type. XForms makes use of XML Schema whereby XHTML1.1 does not provide for this information. | HTML, XHTML
1.0-1.1 Non-Form elements may be used to inject form data. Changing the DOM value property should affect the attribute and changing the value attribute should affect the DOM value property. When available must provide type and precision. XForms: computed from the data model |
MSAA: should return the value
for getValue(). ATK: should return this as part of of the AccessibleValue structure. |
Need to support | HTML today | New role to map from | User Agent mapping |
---|---|---|---|
checked Definition: This is used for elements having a check box representing a checked state. values: true |
<input type="checkbox"> |
role= "checkbox|menuitem-checkbox|button-checkbox" | For all non-HTML checkboxes,
this state is determined from the value property. If the value is true
for the designated roles the corresponding checked state must be set to
true. Otherwise, the checked state is determined from the form input
control. MSAA: STATE_SYSTEM_CHECKED ATK: ATK_STATE_CHECKED |
default Definition: This is the default submit button used to submit form data. values: "true" |
<input type="submit"> or <button type="submit"> |
role="submit". |
MSAA:STATE_SYSTEM_DEFAULT This state is determined from the role for all other platforms. |
iconified Definition: This is the state when an object, application, document, is minimized and represented as an icon values:"true" |
role= "html:document", "html:application" |
If the state is "expandable": ATK:ATK_STATE_ICONIFIED |
|
multiline |
<textarea> | role="textarea" | ATK:ATK_STATE_MULTI_LINE This state is determined from the role for all other platforms. |
pressed Definition: Same as checked. values: "true" |
role= "checkbox"|"menuitem-checkbox"|"button-checkbox" | MSAA: STATE_SYSTEM_PRESSED
is true when checked. ATK: ATK_STATE_PRESSED is true when checked |
|
secret |
<input type="password"> | role="password" | MSAA:STATE_SYSTEM_PROTECTED ATK:ATK_STATE_SECRET |
singleline |
<input type="text"> |
role="textfield" |
ATK:ATK_STATE_SINGLE_LINE This state is determined from the role for all other platforms. |
State |
HTML today | User Agent Mapping |
---|---|---|
default |
<input type="submit"> or <button
type="submit"> |
MSAA:STATE_SYSTEM_DEFAULT For all other platforms, the user agent must make available through the DOM or a specialized API. |
multiline |
<textarea> |
ATK:ATK_STATE_MULTI_LINE Other platforms: implied based on the textarea being representative of it role. |
multiple |
<select> |
MSAA:STATE_SYSTEM_EXTSELECTABLE ATK:ATK_STATE_MULTISELECTABLE |
secret |
<input type="password"> |
MSAA:STATE_SYSTEM_PROTECTED |
selectable |
<option> |
MSAA:STATE_SYSTEM_SELECTABLE ATK:ATK_STATE_SELECTABLE |
selected |
<option> |
MSAA:STATE_SYSTEM_SELECTED ATK:ATK_STATE_SELECTED |
singleline | <input type="text"> | ATK:ATK_STATE_SINGLE_LINE Other platforms: implied based on the textarea being representative of its role. |
State |
Reason for management by User Agent |
User Agent Mapping |
---|---|---|
activewindow
Value: "true" |
This
must be supported
automatically by the browser as the solution involves focus management
in the user agent. |
MSAA:activewindow ATK:activewindow This should be set to true when the Frame or element within a frame which has a role of "html:frame or html:dialog" or "html:messagebox" who has a child element with focus or an actual frame has focus. There can be only one active window. If an element has a role that is indicative of these roles it shall take precedence over the frame in which it is contained. |
busy Definition: Indicates that the element cannot receive input vs. not editable. This is set by the user agent such as when loading pages. values: "true" |
The author does not have control over this. This is a user agent function. | MSAA:busy ATK:busy This is applied to the document to indicate that the page cannot receive user input such as when the page is loading. |
focused Definition: The element with input focus. Values: "true" |
Must ensure that only one element has focus at any given
time. Note: the page author must be able to perform setFocus() on any
page element which is active. |
MSAA: STATE_SYSTEM_FOCUSED ATK: focus |
haspopup Definition: Indicates that a pop-up menu can be launched from this element. This is a used by alternative input devices to indicate a pop-up menu can be activated. values: "true" |
This applies to all elements. Redundant information exists in the roles of the event handlers. This was created for MSAA as a shortcut to get semantic information about the default action. This is not required for ATK. |
This state should be mapped to true on Windows systems when an
event handler has a role of pop-up menu. MSAA: haspopup ATK: not necessary in ATK because it has multiple actions with descriptions. |
linked Definition: Indicates if the element contains a hypertext link to another URL. Values: "true" |
This information is declarative and should be managed by the user agent. | HTML: <a href="url"> href="url" on any element in XHTML 2.0 MSAA:linked ATK:This is implied by implementing AtkHyperlink On all other platforms this information must be provided through the DOM or some other API mechanism |
showing, offscreen
Values="true", "false" |
This must be managed by the user agent and not the author. |
MSAA: offscreen ATK: showing Value is true if fully or partially visible on screen after clipping. |
visited Definition: Indicates if the element contains a hypertext link to another URL which has already been visited. Values:"true" |
This information is declarative
and should be managed by the user agent. |
HTML: <a href="url"> href="url" on any element (XHTML 2.0) MSAA:visited On all other platforms this information must be provided through the DOM or some other API mechanism |
State |
Reason |
---|---|
active |
Unnecessary. This can be
determined if an event handler is present. |
animated, marqueed |
This should be done via a style sheet whereby the browser provides a method for getting this information from the final format of the style. This does not appear to be implemented in browsers. |
managesdescendants |
Unnecessary.
This is handled by the event bubbling mechanism in the DOM, whereby
they need only attach to the root node to listen for all events and
their target. It is inefficient to attach event monitors on all DOM
elements. |
sensitive | Unnecessary. This applies only to ATK and Sun indicates this
may be duplication of effort. |
unavailable |
This is the same as disabled (not the same as busy). |
To generate the requirements a mapping was completed between between MSAA and GAP accessibility state information. All state information which should be generated by the user agent vs. the script, such as showing are omitted.
These requirements have been reviewed by Peter Korn and Bill Haneman at Sun and agreement was reached with the WAI PF working group.
Proposed State Attributes | Definition | Implied document states today | MSAA, GAP, Cocoa |
Questions/comments |
---|---|---|---|---|
activewindow | Indicates a window is currently the active window. | N | GAP Cocoa |
Sun is OK with this |
animated | The element's appearance changes rapidly or constantly. This state is used to indicate that the element's location is changing. | N | MSAA | |
busy | Indicates that the element cannot receive input vs. not editable. | N | MSAA,GAP |
|
*checked | Replaced by the value property. |
Y | MSAA,GAP |
When included with role, may be
replaced by the value property. Which would be true in this case. |
collapsed | Children of this element are hidden. Allows for progressive disclosure of children. | N | All |
GAP's name is “expandable”. The mapping is straight forward for GAP. The bridge mapping layer would simply translate the state information accordingly. |
*default | The default state applies to a UI element that is the default among a set of similar elements. Typically applies to context menu items and buttons. One example is the default submit button among a set of buttons. | Y | MSAA | MSAA treats this as the default button with focus in a window. However, this should be expanded to meet a web page as the CSS working group has already defined. |
*enabled, *disabled | The purpose of the enabled state is
to allow authors to customize the look of user interface elements which
are enabled - which the user can select/activate in some fashion (e.g.
clicking on a button with a mouse). There is a need for such a state
because there is no way to programmatically specify the default
appearance of say, an enabled input element without also specifying
what it would look like when it was disabled.
Similar to enabled, disabled allows the author to specify precisely how a disabled or inactive user interface element should look. It should be noted that most elements will be neither enabled nor disabled. An element is enabled if the user can either activate it or transfer the focus to it. An element is disabled if it could be enabled, but the user cannot presently activate it or transfer focus to it. |
Y | All |
GAP supports disabled and sensitive. Bill Haneman believes there is redundancy with sensitive in GAP. Will use standard because already in place. GAP mapping can address inconsistencies. |
expanded | Children of this element are displayed. | N | All |
|
*focus | state applies while an element has the focus (accepts keyboard or mouse events, or other forms of input). | Y | All | Note: Corresponds to focused in MSAA
and GAP. This applies to other forms of input besides the keyboard.
This is needed for device independence. Focus is used vs. focused as
this is already in the CSS3 Basic UI module.
Bill: Distinction between keyboard focus and other kinds of focus is needed, if we overload this term, for on screen keyboard clients. Rich to Working Group: This is a problem. on most systems this means keyboard and not mouse. We need to discuss. |
focusable | The element is in the active window and is capable of receiving focus. Receiving focus means it can respond to keyboard input when it has focus. | N | All |
This has proven very useful, especially for text navigation and for onscreen keyboards. From a style sheet perspective, the page author may wish to indicate this. |
haspopup | Element displays a pop-up menu or window when invoked. | N | MSAA | Note: In GAP we expose this information as a relationship between objects, with the POPUP_FOR relationship. Would be valuable to use this information to establish a GAP relationship. |
horizontal | Indicates the orientation of this element is horizontal. If JavaScript were used to render a horizontal/vertical scroll bars or progress bars this would be of value. | N | GAP, Cocoa |
Microsoft hard codes an object ID for this which limits the MSAA to a standard Windows scroll bar implementation. Use of state is a better implementation. |
iconified | Indicates this element is minimized and is represented only by an icon | N | GAP, Cocoa |
|
*indeterminate | Indicates that the state of a three-state check box or tool bar button is not determined. The check box is neither checked nor unchecked and is therefore in the third or mixed state. | N | MSAA, GAP | Replaces mixed for MSAA as is a
close match to GAP and is already provided for in the CSS3 Basic UI
specification.
This state could be used for more than a 3-state control (e.g. 4+ state). It is the state that is indeterminant, though the data referred to may be mixed. |
invisible, visible | The element is programmatically hidden or made visible. For example, menu items are programmatically hidden until a user activates the menu. Because elements with this state are not available to users, client applications should not communicate information about the element to users. | N | MSAA, GAP |
There is either one or both on either platform. |
*invalid; valid | An element is :valid or :invalid when it is, respectively, valid or invalid with respect to the bound instance data constraints. An element which lacks data validity semantics is neither :valid nor :invalid. This is different from an element which otherwise has no constraints. Such an element would always be valid. | Y | GAP | GAP provides an invalid state. There is nothing in MSAA. |
linked; visited | Indicates that the element is formatted as a hyper link. | N | MSAA | MSAA :linked, traversed – MSAA
This will be useful to map non-link elements that are simulated as links in JavaScript to GAP as well. |
managesdescendents | Indicates that "active-descendant-changed" event is sent when children become 'active' (i.e. are selected or navigated to onscreen). Used to prevent need to enumerate all children in very large containers, like tables. | N | GAP | Questions: Can a "style" be applied
here? Can someone give me a use case for this wrt. JavaScript generated
content on a web page.
PETER:this is commonly associated with transient (an object with transient children often [should] manage its descendents). BILL: Vital for spreadsheets and other objects with a large number of children. Very possibly needed for big JavaScript tables. |
marqueed | Indicates scrolling or moving text or graphics. | N | MSAA | |
moveable | Indicates that the element and its children can be moved such as for dragging or dragging and dropping. | N | MSAA | |
multiselectable | Indicates this element allows more than one of its children to be selected at the same time. | N | MSAA, GAP |
Working group decided to use multiselectable. And remove :extselectable. (MSAA) |
multiline, single line | Indicates this (text) element can contain multiple lines of text. This should be limited to text fields and text areas but not general free-form text. | N | GAP | This has been helpful for GAP.
Important when determining what keyboard navigation model to use, and in some other cases (for instance, TAB behaves differently in the two cases for most toolkits) |
pressed | Indicates the element is pressed. B10 | N | MSAA, GAP |
|
*read-only, *read-write | Indicates the user can change the contents of this element or not. | Y | MSAA, GAP |
Replaces read-only in MSAA and editable from GAP. |
resizeable | Indicates the size of this element is not fixed and therefore may be resized. For example, a user could change the size of a window by clicking the border with a mouse and dragging the mouse. This would also apply to resizing a column in a spreadsheet. | N | MSAA, GAP | MSAA calls it sizeable. This is different from the dictionary meaning. |
secret | Used to provide the user with the ability to supply information to the system in a manner that makes it difficult for someone, other than the user, who may be observing the process to discern the value that is being supplied. A common use is for password entry. | N | MSAA | MSAA supports protected. GAP has a
notion of a Secret Role that is used by Open Office. XForms makes use
of a secret element and HTML 4.0 makes use of a password attribute.
Comment: this would be valuable when processing a form if you were
blind. If you tabbed to the field you could determine this information
right away.
It might be useful to GAP later on for things like 'secret' spread sheet cells too, though the semantics need to be clarified. |
selectable | Indicates this element accepts selection. | N | MSAA,GAP | GAP is more explicit by referring to
a child hierarchy. This is too restrictive. For example we may want to
apply selected to a table cell row or column.
BILL: I think we need to keep this state on a per-object basis; if we need different semantics for rows/columns I would prefer a different (additional) state. |
selected | Indicates the element is selected. | N | MSAA, GAP | GAP is more explicit by referring to
a child hierarchy. This is too restrictive. For example we may want to
apply selected to a table cell row or column.
BILL: I think we need to keep this state on a per-object basis; if we need different semantics for rows/columns I would prefer a different (additional) state. |
selfvoicing |
The element or child uses text-to-speech (TTS) technology for description purposes. A speech-based accessibility aid does not announce information when an element with this state has the focus because the element automatically announces information. |
N | MSAA | This would be helpful in the case of an audio style sheet. It prevents an assistive technology from reading something that is already being spoken. Furthermore, if a self-voicing document element was present, such as a self voicing applet, this would be very helpful to coordinate speaking or not speaking of the applet. |
vertical | Indicates the orientation of this element is vertical. If JavaScript were used to render a horizontal/vertical scroll bars or progress bars this would be of value. | N | GAP, Cocoa |
Microsoft hard codes an object ID for this which limits the MSAA to a standard Windows scroll bar implementation. Use of state is a better implementation. |
unavailable | Indicates the element is unavailable. | N | MSAA | Could be valuable on a page basis such as when the page is waiting on a web service to complete a form submittal. The rendering may be a please wait indicator or some color combination. |
Additional state information corresponding to CSS3 Basic UI specification. | ||||
*active | Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it. | Y | None | These are not in MSAA or GAP. This is the GAP state ARMED. GAP will need to MAP this to ARMED. |
*hover | Applies while the user designates an element (with some pointing device), but does not activate it. For example, a visual user agent could apply this state when the cursor (mouse pointer) hovers over a box generated by the element. User agents not supporting interactive media do not have to support this pseudo-class. Some conforming user agents supporting interactive media may not be able to support this pseudo-class (e.g., a pen device). Author should also implement active at the same time. | Y | None | Rich: Hover simply means to apply a style when the mouse is over the object. You would probably require the developer to indicate active at the same time. This would be mapped to hottracked in MSAA. Page author should also implement “active” when this is turned on. |
*in-range, *out-of-range | Apply only to elements that have range limitations. An element is :in-range or :out-of-range when the value that the element is bound to is in range or out of range of the visual representation of the element respectively. E.g. a slider element with a value of 11 on a slider that only represents the values from 1-10 is :out-of-range. In summary: an element is :out-of-range when it does not accurately reflect the state of the model. | Y | None | |
*optional, required | If a value for each is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional. This spec does not defined what is a form element. | Y | None | Recommend this be added to GAP or MSAA derivative. |
CSS3 Basic User Interface Module
http://www.w3.org/TR/css3-ui/CSS3 Selectors
http://www.w3.org/TR/css3-selectors/Microsoft Active Accessibility (MSAA) state information
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaaccrf_8y2b.aspGnome Accessibility Project (GAP) State and StateSets.
http://developer.gnome.org/projects/gap/tech-docs/at-spi-docs/at-spi-cspi-state-and-statesets.html