输入可以是带有 aria-labelledby 而不是 <label> 的 "labeled" 吗?

Can an input be "labeled" with a aria-labelledby instead of a <label>?

以下内容是否符合 WCAG 2.0?

<span id="my-label">Your photo</span>
<input id="my-upload" type="file" aria-labelledby="my-label">

OS X 屏幕 reader 理解这一点,例如当它获得焦点时读取输入的标签,但 Total Validator 抱怨如下:

您可以通过 this page 上的 运行 Total Validator 自行尝试。 Total Validator 报告此错误是否正确,或者这是 Total Validator 中的错误?

(显然,在这个特定示例中,我可以使用 <label for="my-upload">,而不是依赖 aria-labelledby。甚至可以争辩说,使用 <label> 具有更多语义权重并且应该是首选。但这不是我要问的问题,因为在我的现实生活中使用 <label> 无法完成。)

可以使用 aria-labelledby 作为在可见标签已存在的情况下创建易于访问的名称的方法。最好使用 for-id 提供标签关联,因为这将允许单击标签文本将焦点放在输入字段(或 select 复选框或单选按钮)。

您的可访问性分析器是旧的。如果你使用 aXe accessibility analyzer,你会注意到它不会抱怨这个问题。

aria-labelledby 用于向屏幕阅读器等辅助设备提供信息。如果您不使用此类特定设备,它将没有任何帮助。

它不会向 99% 的人提供任何信息。所以是的,Total Validator 将此报告为错误是正确的,因为 WCAG 不需要使用特定设备。也就是说,您可以在无法使用 label 标签的情况下使用 title 属性。

参见:H65: Using the title attribute to identify form controls when the label element cannot be used