【发布时间】:2011-06-02 17:35:47
【问题描述】:
以下 HTML 由 jQuery Grid 插件插入:
<td role="gridcell" style="" aria-describedby="list_createdBy">Sam</td>
'aria- describeby' 属性是什么意思?
【问题讨论】:
以下 HTML 由 jQuery Grid 插件插入:
<td role="gridcell" style="" aria-describedby="list_createdBy">Sam</td>
'aria- describeby' 属性是什么意思?
【问题讨论】:
基本上,
aria- describeby 属性用于通过使用 id 参考列表将描述性信息附加到一个或多个 HTML 标记(id 参考列表包含一个或多个唯一的 HTML 标记 id )。
aria- describeby 属性与 aria-labelledby 属性(描述 HTML 标签本质的标签)非常相似,但 aria- describeby 属性提供有关用户可能需要的 HTML 标记的更多信息。
aria- describeby 和 aria-labelledby 属性主要对使用 辅助技术(如 屏幕阅读器)的用户有用。
供参考:
【讨论】:
乍一看,aria-describedby 在这里可能会被忽略,因为它是在 <td> 上定义的。大多数浏览器和屏幕阅读器在设置在非交互式(可聚焦)元素上时会忽略 aria-describedby 信息。
但是由于role="gridcell" 覆盖了<td> 的语义,所以具体示例稍微复杂一些,因此如果提供的示例遵循ARIA specification for gridcell,则它是有效的。这是一个自定义组件。
一般而言,aria-describedby 属性为屏幕阅读器提供了附加信息,这些信息将随着元素的内容(不是唯一但最常见的用例)一起公布。
例如,屏幕阅读器将宣布"Logout, John Doe",而不仅仅是"Logout":
Logged-in as <span id="user">John Doe</span>.
<a aria-describedby="user" href="/logout">Logout</a>
或带有工具提示的示例(提示:此处缺少 Javascript 部分):
<button type="button" aria-describedby="my-tooltip">Snipping Tool</button>
<div hidden id="my-tooltip" role="tooltip">
It can take still screenshots of an open window,
rectangular areas, a free-form area,
or the entire screen.
</div>
或带有表单元素的示例,另一个常见用例:
<form ...>
<label for="my-name">Full name</label>
<input aria-describedby="my-name-desc" id="my-name" type="text"/>
<p id="my-name-desc">
Please tell us your full name.
</p>
</form>
当用户关注输入字段时,上面的示例将立即宣布<label> 和附加描述(由aria-describedby 定义)。它不仅消除了阅读环境以了解预期输入的内容的需要,而且当屏幕阅读器用户在<form> 内部时阅读除表单控件之外的所有元素可能更复杂。这是与阅读页面其余部分不同的体验。因为键盘事件可以与屏幕阅读器或表单控件交互,但很难同时与两者交互。更不用说屏幕阅读器提供了许多有用的键盘快捷键,例如按“H”将跳转到下一个标题,但显然不是当 <input> 字段被聚焦时。然后将“H”输入到<input>。
aria-hidden 或 aria-expanded。但前提是正确实施和测试!a 或 button 上实现它可能会有所不同,如果引用的元素是隐藏的 (display:none),它的位置(是否引用了内部元素?)或者如果它有 tabindex="-1" 或 role(例如role="none") 等。确保测试所有屏幕阅读器aria-describedby。因此,将其添加到不可聚焦的元素是没有意义的。来自:ADG
Ctrl+F 进行搜索(这是用户喜欢浏览网站以快速找到所需内容的常用方式)。来自:ADG
aria-describedby 的唯一情况是将附加信息附加到交互元素(例如关联可见信息,例如表单控件)。来自:ADG
aria-describedby(在表单控件上)和 role="alert"(在 SPAN 上)的组合来解决表单控件错误。来自:W3.org
【讨论】:
这在aria specification 中有描述。它给出了元素的 id,该元素提供了一些用户可能需要的有关当前元素的一些附加信息。
【讨论】:
aria-describedby,我也可以清楚地阅读附加信息。所以,问题是:这个标签对谁有用?
下面是如何使用 aria- describeby 属性的示例。当您有包含有关元素信息的文本时使用它。 Aria- describeby 必须与描述它的文本的 id 相同。
First name: <input aria-describedby="name" type="text">
<em id="name">Your first name must be correct.</em>
【讨论】: