【发布时间】:2012-02-06 17:44:33
【问题描述】:
我正在开发一个需要大量键盘导航的网络应用程序。
我已经控制了 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 在所有其他浏览器中包含超过 300 个元素,除了 IE7,它包含近 800 个元素。
编辑:
我已经设法在 IE7 中编写了一个不包含 tabindex="0" 元素的选择器。
elements = $("div").find("[tabindex][tabindex!=0][tabindex!=-1]:visible:not(:disabled)");
【问题讨论】:
-
除了历史上的某一点微软不关心网络和任何在 IE 中运行的垃圾之外,可能没有“为什么”。如果您想支持 IE7,您可能需要添加一些标记,例如 CSS 类,以区分真正的 tabindex 元素和您指定自己作为解决方法的元素。
-
我想是的。但是我设法编写了一个也适用于 IE7 的选择器,因此不需要添加 CSS 类(这是我们最后且乏味的手段)。
标签: javascript jquery internet-explorer-7