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

时间:2012-01-10 09:42:04

标签: javascript jquery internet-explorer-7

我正在开发一个需要很多键盘导航的Web应用程序。

我已经控制了tab键导航,我使用以下示例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个元素,这会导致性能下降,其中包含近800个。

修改

我设法在IE7中编写了一个不包含tabindex =“0”元素的选择器。

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

1 个答案:

答案 0 :(得分:1)

HTML使用tabindex attribute来控制Tab键顺序。因此,默认情况下会为所有元素添加tabindex,以使页面元素键盘可访问。它也用于其他浏览器中的focus pseudo class

<强>参考