在已标记的input元素上使用“aria-labelledby”的目的是什么?

许多ARIA演示网站使用的代码如:

<label for="name" id="label-name">Your Name</label> <input id="name" aria-labelledby="label-name" type="text"> 

但在这种情况下使用aria-labelledby属性的目的是什么? input元素已经被for属性的label元素标记,不是吗?

在Mozilla开发者页面中有一些很好的例子。 也许他们最好的例子是用来关联一个popup式菜单和父菜单项的地方 – 这是页面中的例7:

 <div role="menubar"> <div role="menuitem" aria-haspopup="true" id="fileMenu">File</div> <div role="menu" aria-labelledby="fileMenu"> <div role="menuitem">Open</div> <div role="menuitem">Save</div> <div role="menuitem">Save as ...</div> ... </div> ... 

ARIA属性在build立可访问的富互联网应用程序方面往往是最有用的:只要你坚持使用标准的语义HTML – 使用带有标准标签的表单 – 你根本不需要它:所以没有理由使用它一个LABEL / INPUT对。 但是,如果你从头开始构build“富UI”(DIV和其他低级元素,并增加了javascript的交互性),那么让屏幕阅读器知道更高层次的意图是至关重要的。

总是有任何新的UA支持问题,这就是为什么开发人员期待逐步提高。 这种ARIA技术可以消除“for”属性,并允许其他元素成为丰富表单的一部分。 这些技术将成为常用的做法。