为什么tabindex在锚链接上默认为-1而不是按钮?

时间:2017-02-06 22:16:23

标签: html html5 hyperlink accessibility language-lawyer

这更像是一个历史或问题。

与按钮不同,链接往往具有tabIndex -1作为默认值。我知道这是因为:

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

  

如果未指定,则默认值为-1

但是按钮会自动tabIndex,所以问题是:决定链接不需要大于0 tabIndex的原因是什么?因此,Tab键应该忽略默认状态下的链接。

2 个答案:

答案 0 :(得分:3)

HTML5.1¹定义了省略tabindex attribute时用户代理应该做什么:

  

用户代理应遵循平台约定来确定元素的tabindex focus flag是否已设置[...]

该规范建议应该获得此标记的一些元素,包括a元素(只要它们具有href属性)和button元素。

因此,遵循规范建议的用户代理不会区分abutton元素与默认焦点行为。

我不确定为什么链接的MDN页面包含引用的语句(似乎是错误的)。也许这是对规范关于tabIndex IDL属性的说法的误解?

  

tabIndex IDL属性必须反映tabindex内容属性的值。对于可聚焦的元素,其默认值为0;对于不可聚焦的元素,其默认值为-1。

¹HTML5.1是截至目前的最新W3C推荐标准。但是之前的HTML W3C建议和WHATWG的HTML生活标准可能并没有以不同的方式定义这个方面w.r.t.到abutton

²这不是必需的,因为规范使用应该而不是必须

答案 1 :(得分:2)

您引用的MDN页面是tabindex 全局属性的定义。这不适用于button或链接。

事实上,tabindex可以有四种类型的值:

  • 未设置时:无法通过键盘或鼠标以编程方式聚焦元素
  • -1:可以通过编程方式或使用鼠标
  • 来聚焦元素
  • 0:可以使用键盘或鼠标以编程方式聚焦元素
  • 任何值>0:不要使用此值。决不。无法访问。

链接(a[href]button)或其他互动元素(例如表单字段)的默认值为0

断言任何其他元素的默认值为-1为false。默认值"值"对于那些其他元素,不要定义此属性