本周我向可访问管理员模板中添加了WAI-ARIA里程碑角色。ARIA是为了解决Web 2.0及其丰富的行为层引入的无障碍性问题而创建的。

ARIA是什么?

WAI-ARIA代表Web无障碍倡议-可访问富互联网应用。它为新一代动态用户界面提供无障碍支持,并定义了网页不同部分的角色。

用户界面部分提供了一些技术,用于处理动态界面(如Ajax和JavaScipt),通过添加ARIA属性和状态来描述小部件的状态,实时区域会频繁更新,以及中断策略,以便在关键内容发生变化时通知用户。

例如,如果您使用AJAX更新页面的一部分,在当前情况下,使用某些辅助技术的用户可能不知道页面上发生了关键变化,或者在发生不重要的变化时被迫重新阅读整个页面。理想情况下,这些属性和状态将被添加到诸如Dojo、jQuery和MooTools之类的工具包中,以便它们自动可用。

属性还可用于以一致的方式标记表单,以指示必填字段和其他验证行为。它还极大地便利了键盘的使用,允许聚焦之前无法聚焦的标签。

ARIA角色提供了一种识别页面不同区域的方式,如页眉、导航和主要内容。它们还提供了一种识别小部件类型的方式,以便代理/用户知道如何处理它们。辅助技术将使用这些方法来允许直接更轻松地访问给定区域。普通浏览器不仅能提供给残疾人士无障碍增益,也能为其他用户提供增益。

是我向模板中添加的ARIA角色。

现在谁在使用ARIA?

IE8、Firefox 3.2+、Opera 10 beta、Safari 4 均对 ARIA roles 提供了一定的支持。Steve Faulkner 的博客详细介绍了当前的支持状态。许多辅助技术已经开始支持它。

动态界面的支持主要将通过 JavaScript 工具集来实现。根据 Paciello Group 的说法,包括 Dojo、YUI 和 jQuery 在内的一些工具集已经实现了 ARIA,或者正在实现过程中。遗憾的是,MooTools 不在名单上。

详细信息请查看以下链接。

如何指定 ARIA roles?

通过添加 role 属性来指定角色。

<div role="main" id="content">

使用 ARIA roles 有哪些问题?

W3C 定义了 ARIA 的使用,但由于 ARIA 是在 HTML 4.1 或 XHTML 1.0 之后开发的,所以 "role" 属性不是 (x)HTML 验证的一部分,因此如果定义了 ARIA roles,您的页面将无法通过验证。

当前的解决方法是使用 JavaScript 将 roles 添加到 DOM 中。这样页面可以通过验证,同时仍然允许使用 roles。我的标准ista灵魂对此想法感到震惊,这也排除了没有 JavaScript 的人,但目前在看来是最好的折中方案。这是 Angie Radtke 在 1.6 版本的 accessible Beez 模板中使用的路径,也是我采取的路径。我使用 Beez 的 JavaScript 作为我的模板基础。

其他方法包括创建一个 XTML 加 ARIA 规范,指向验证器,或者使用 validator.nu。

ARIA roles 和新的 HTML5 标签有何比较?

HTML5 添加了新的标签,如 header、nav、article、section、aside 和 footer。虽然 ARIA roles 的数量远多于 HTML5 中的特殊标签,但有一些重叠。例如,navigation、contentinfo 和 complementary 与 HTML5 的 nav、footer 和 aside 重叠。建议在浏览器代理和辅助技术完全支持 HTML5 之前,两者都指定。即使是这样,您也会想继续使用 HTML5 未指定的 roles。

结论

2009 年是 ARIA 最终成长的一年。已经准备好了最终的草案,浏览器已经开始支持它,一些 JavaScript 工具集已经实现了它,其他的正在开发中。这是一种非侵入性的辅助功能,应该成为网页开发者工具包中的标准部分。不仅需要使用屏幕阅读器的人会从中受益,所有需要使用键盘导航网页的人也会受益。

进一步阅读

W3C WAI-ARIA

其他信息来源