我正在开发一个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)");
没有可能是“为什么”之外,历史上的一个点微软并未在意网页和任何废话在IE浏览器中运行。如果你想支持IE7,你可能需要添加一些标记,比如CSS class来区分真正的tabindex元素和你已经将自己指定为解决方法的元素。 – 2012-01-10 09:50:27
我想是的。不过,我设法编写了一个也适用于IE7的选择器,因此添加CSS类(这是我们最后和繁琐的手段)是没有必要的。 – 2012-01-10 10:59:44