2012-01-10 95 views
3

我正在开发一个Web应用程序,它需要很多键盘导航。为什么IE7将tabindex =“0”添加到没有tabindex的元素?

我已经采取了tab键导航控制,我选择用下面的例子jQuery选择器的所有元素:

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

所以我不选择不可见元素,被禁用的元素或具有0的tabindex属性。

这在Firefox,Chrome和IE8 +中很适用。不幸的是,该项目需要支持IE7。 出于某种原因,IE7似乎将tabindex =“0”添加到没有由我们设置的tabindex的元素,elements包含IE7中tabindex =“0”的元素,尽管选择器不应添加它们。

任何人都知道为什么IE7的行为如此,如果有什么可以做的呢?

这将导致我们的最坏的情况下表现不佳命中其中elements包含所有其他浏览器超过300元,除了IE7,其中包含了几乎800

编辑:

我已经成功地在IE7中编写一个不包含tabindex =“0”元素的选择器。

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

没有可能是“为什么”之外,历史上的一个点微软并未在意网页和任何废话在IE浏览器中运行。如果你想支持IE7,你可能需要添加一些标记,比如CSS class来区分真正的tabindex元素和你已经将自己指定为解决方法的元素。 – 2012-01-10 09:50:27

+0

我想是的。不过,我设法编写了一个也适用于IE7的选择器,因此添加CSS类(这是我们最后和繁琐的手段)是没有必要的。 – 2012-01-10 10:59:44

回答