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

4

这更像是一个历史或者为什么的问题。

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

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

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

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


2
我认为您误读了链接。没有任何元素自动具有“tabindex”属性。一个<button>和一个<a href...>因为它们是交互式控件,所以会自动进入选项卡顺序。作者设置tabindex="-1",这样它就不在选项卡顺序中,但可以通过脚本添加。 - aardrian
<a href...>并不会自动包含在选项卡顺序中,可以创建一个基本的HTML页面放置一些链接进行测试,如果链接没有href属性,它可能会超出tabindex顺序。 - ncubica
1
我经常这样做。我经常在演示中添加链接,只是为了在页面上增加另一个选项卡停靠点。你有没有它无法正常工作的视频?如果链接没有 href,那么它不是链接,而是锚点,并且不存在于选项卡顺序中。 - aardrian
@aardrian 是的,我认为这就是为什么它不起作用的原因。 :) - ncubica
2个回答

3
HTML 5.1¹规定了当省略tabindex属性时,用户代理应该执行的操作:

用户代理应该遵循平台惯例来确定元素的可聚焦标志 tabindex 是否被设置[…]

规范建议某些元素应该获得此标志,包括带有href属性的a元素和button元素。
因此,遵循规范建议²的用户代理不会在默认聚焦行为方面区分abutton元素。
我不确定为什么链接的MDN页面包含引用的语句(它似乎是错误的)。也许这是对tabIndex IDL属性的规范解释误解?

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


¹ HTML 5.1是截至目前为止的最新W3C推荐。但以前的HTML W3C推荐和WHATWG的HTML Living Standard可能不会在abutton方面对此进行不同的定义。

² 这不是一个要求,因为规范使用“应该”而不是“必须”。


3
您引用的 MDN 页面是 tabindex 全局属性的定义。这不仅适用于 button 或链接。
实际上,tabindex 可以有四种类型的值:
- 当未设置时:元素无法通过编程、键盘或鼠标聚焦。 - -1:元素可以通过编程或鼠标聚焦。 - 0:元素可以通过编程、键盘或鼠标聚焦。 - 任何值 >0:不要使用此值。永远不要。不可访问。
链接(a[href])或其他交互式元素(如表单字段)的默认值为 0
断言其他元素的默认值为 -1 是错误的。对于这些其他元素,默认情况下不定义此属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接