HTML的“tabindex”-它能否成为“区域性”的还是不能?

3
我使用AngularJS多次重复一块HTML,并希望在每个项目内独立设置焦点顺序。
让我感到困惑的是,我不太清楚tabindex应该如何工作。 浏览器是否应该将tabindex属性用于整个文档,或者在某些情况下可以将其范围视为区域性,例如,在文档中遵循区域内的制表符顺序(例如,在<form>元素内),直到您走出该区域?
基本上,我的重复块内的元素将具有固定的tabindex值,因此当它们被ng-repeat乘以时,将会有许多tabindex="1"和许多tabindex="2"等。 我可以这样做并使制表符顺序在每个重复项内成为区域性吗?
我一直在尝试阅读这里的内容(我在Google上找到了它),但我还没有找到能回答我的问题的东西:http://www.w3.org/TR/html5/editing.html
在这里: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex 我找到了这个声明:

如果几个元素共享相同的 tabindex,则它们的相对顺序遵循它们在文档中的相对位置。

这是否意味着 tabindex 不能是区域性的?
我可以在浏览器中尝试实验,但我想知道规范对此有何说明。
我知道使用 Angular 可以有一些使 tabindex 值唯一的替代方法,但如果可能的话,我想避免使用它们。

1
据我所知,tabIndex不是“区域性”的。 - undefined
3个回答

4

如前所述,tabindex是一个全局属性。

tabindex = 整数

指定元素是否表示可聚焦的元素(即,文档中可聚焦元素序列中的元素),以及元素在文档中可聚焦元素序列中的相对顺序

请在规范中阅读更多内容。

请注意,如果页面中设置了tabindex,则您将首先循环遍历所有设置了tabindex的元素,然后在聚焦所有具有tabindex属性的元素之后,您将返回到文档开头并按照正常页面流程进行。


3

浏览器是否应该使用tabindex属性来处理整个文档?

是的。

或者在某些情况下,它的范围可以被认为是区域性的吗?

不是。

如果几个元素共享相同的tabindex,则它们的相对顺序遵循它们在文档中的相对位置。

这是否意味着tabindex不能是区域性的?

不是,这意味着如果你有:

<label><input tabindex="1"> A</label>
<label><input tabindex="2"> B</label>
<label><input tabindex="1"> C</label>
<label><input tabindex="2"> D</label>

如果按照顺序,则顺序将为A(第一个1),C(第二个1),B(第一个2),D(第二个2)。


是的,这就是我从Mozilla的引用中理解到的。:) 只要没有例外,我猜tabindex将始终是全局的而不是区域性的。 - undefined

3
不,tabindex不是区域性的。最好的方法是为文档的三个部分保留tabindex的范围。
例如:
  • 在重复块之前:tabindex < 100。
  • 在重复块中:从100开始,每次迭代增加10。因此第一次迭代得到100、101、102、103...,第二次迭代得到110、111、112、113...。
  • 在重复块之后:tabindex > 300。(这意味着您有足够的空间来进行20次ng-repeat的迭代。)

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