为什么IE7添加tabindex=“;0”;到没有tabindex的元素

Why does IE7 add tabindex="0" to elements without tabindex?

本文关键字:tabindex 元素 IE7 为什么 添加      更新时间:2023-09-26

我正在开发一个需要大量键盘导航的web应用程序。

我已经控制了选项卡键导航,并通过以下jQuery选择示例选择了所有元素:

elements = $("div").find("[tabindex]:visible").not("[tabindex='0'], :disabled");

因此,我不选择不可见的元素,即禁用或tabindex为0的元素。

这在Firefox、Chrome和IE8+中非常有效。遗憾的是,该项目需要IE7的支持。出于某种原因,IE7似乎将tabindex="0"添加到没有我们设置的tabindex的元素中,并且elements在IE7事件中包含tabindex="0"的元素,尽管选择器不应该添加它们。

有人知道IE7为什么会这样做吗?如果有什么可以做的吗?

在最坏的情况下,elements在除IE7之外的所有其他浏览器中都包含300多个元素,而IE7包含近800个元素,这会导致性能下降。

编辑:

我已经成功地编写了一个选择器,它不包括IE7中tabindex="0"的元素。

elements = $("div").find("[tabindex][tabindex!=0][tabindex!=-1]:visible:not(:disabled)");

HTML使用tabindex属性来控制选项卡顺序。因此,默认情况下会为所有元素添加tabindex,以使页面元素可以通过键盘访问。它也用于其他浏览器中的焦点伪类。

参考

  • 18F:键盘访问-辅助功能指南