- From: Ian Hickson <ian@hixie.ch>
- Date: Wed, 16 Jun 2010 03:19:58 +0000 (UTC)
- To: public-html@w3.org
Updated change proposal including a discussion of links vs buttons in a new NOTES section. ISSUE-85 ======== SUMMARY Don't allow people to use ARIA to write inaccessible documents. RATIONALE ARIA is useful for authors who need to make new widgets that HTML doesn't yet support. Buttons are supported by HTML, and therefore there is no reason for an author to make a link act like a button to ATs. Making a link act like a button to ATs while leaving it as a link for non-AT users will lead to non-AT users having a confusing experience, since the author will think the link is going to appear as a button to users and may refer to it as such. What's important to remember is that there are more than two kinds of user agents; there are at least three: 1. User agents with scripting, CSS, etc, which can be made to render elements (like <a>) as other elements (like <button>). 2. User agents with ATs, which report the accessibility mapping described with ARIA, defaulting to the default semantics of the elements. 3. User agents without CSS support or without scripting support, and certainly without ATs, which always use the default semantics of the elements. Some examples of #3 are the text-based browsers, most search engines, and graphical browsers in which CSS or scripting are disabled. The only way to keep things consistent amongst all three is to use HTML elements appropriately, and not override their semantics with ARIA. ARIA is great when you're creating new widgets that aren't in HTML yet: it allows you to create pages that work in #1 and #2, covering the vast majority of users, at the cost of #3, who wouldn't be able to experience the new widget at all anyway. However, when HTML provides the widget you need, as in the case of a button or a link, and #3 already supports that widget and therefore there is no need to fake it. In these cases, ARIA is unsuitable and unnecessary. Validators flag the use of ARIA in these ways, since there is a net benefit to using appropriate elements instead of ARIA in those cases. NOTES It has been suggested that occurances of the following need role="button" to be made accessible: <a href="#" onclick="action()">...</a> <a href="javascript:action()">...</a> However, both are non-conforming uses of the <a> element in HTML, because they both use the <a> element for a purpose other than representing a hyperlink. They are not _syntactically_ non-conforming because they both have valid use cases in indistinguishable cases: <a href="javascript:"> is needed to expose bookmarklets to users, and onclick="" is needed for a wide variety of interactive purposes even on normal links (e.g. making AJAX applications gracefully degrade). Even a link to href="#" has some use cases, e.g. to link to the current page to provide the user with a draggable URL for bookmarking purposes. There's no reason such links shouldn't be made interactive (e.g. the onclick="" could just trigger a click animation). So we can't catch this particular case with a validator. It's unfortunate, but that's what happens when there are valid use cases. The role="" attribute gives us the unique opportunity to catch this particular error as a syntax error. This is a good thing, not a problem. In any case, the above examples should not be exposed to ATs as buttons widgets even if they were valid. They are exposed to users as link widgets, not button widgets, and thus that is the appropriate AT behaviour and the appropriate ARIA role. DETAILS No change. IMPACT POSITIVE EFFECTS Encourages authors to use HTML as intended, which increases the total accessibility of the Web. NEGATIVE EFFECTS None. CONFORMANCE CLASS CHANGES None. RISKS None. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Wednesday, 16 June 2010 03:20:27 UTC