简答
两者都不能使用。
- 如果您想要最大的兼容性,请使用
for=""
- 如果您想要可维护性和更简洁的代码,请使用标签包装。
同时使用这两种方法太过分了,而且会增加代码的复杂性。
使用任一选项均符合 WCAG。
更长的答案
经过一番挖掘,我遇到了this interesting test.
简而言之,屏幕阅读器在这两个版本中的表现都很好,但Dragon Naturally speak仍然不能很好地使用包装标签。
现在我从未见过任何说同时使用两者实际上是可访问性问题的东西,但是如果您添加 for="",则无论如何您都会失去使用包装标签的主要好处。
旁注 - 有趣的是,我们在今年早些时候更改了内部指南以使用包装输入,因为屏幕阅读器对我们选择的浏览器/屏幕阅读器支持组合的全面支持(在放弃 IE8 支持之后) ,如果您需要支持 IE8,那么您仍然需要使用 for="" 而不是包装输入)。
我现在要推翻这个决定,在我们调查 Dragon 问题时,我会使用旧的 for="" 相关标签。
Dragon Naturally speak 被广泛用作辅助技术 (AT),尽管它不是正式的辅助技术。
真的很重要
我就可访问性向人们提出建议,我必须比白人更白,比纯洁更纯洁(实践我所宣扬的)。
实际上,如果您想使用包装标签,因为它们更容易,然后使用它们,100% 的现代浏览器(IE9 及更高版本)都支持屏幕阅读器。
如果您仍然想使用for="",那么它有最好的支持。这将是我的官方建议,但我也认为技术确实需要继续发展,问题应该由 Dragon Naturally speak 解决,他们“不是辅助技术”的借口是无效的,因为它们仍然在平等法案的保护范围内2010 年,ADA 等(在此处插入您所在国家/地区的特定残疾平等法)
同时使用这两者只是矫枉过正,并且无论如何都消除了包装标签的大部分好处,我看不出同时使用这两种标签的意义(除了将来您可以删除包装标签上的 for="" 的事实之外)如果 Dragon 解决了这个问题,请标记)。
最后说明
documentation for this test you linked 写着大写[已弃用] 并链接到此documentation for a replacement test.
我看不出他们为什么取消使用两者的要求的理由(因为我仍然没有看到证据表明使用这两种方法会导致问题,正如我之前所说的那样),但至少这符合我的建议。