【问题标题】:Why does IE7 add tabindex="0" to elements without tabindex?为什么 IE7 将 tabindex="0" 添加到没有 tabindex 的元素?
【发布时间】: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


【解决方案1】:

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

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2017-01-19
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多