我使用快捷链接来加速浏览网页,这在Chrome和Firefox中都有效。
这里是 Fiddle演示我的问题。
当使用跳过链接来更改“tab位置”,然后按
在这个示例中,当链接被点击时,“选项卡位置”会移动到文档中的该位置。然后按下“TAB”键将跳转到尝试此演示之后的下一个可聚焦元素。
除非你使用IE。 IE似乎只有在涉及到聚焦在交互式元素或定义了tabindex属性的元素时才会尊重“选项卡位置”的更改。这意味着作为“片段”或位置锚点使用的锚标签也不会导致tabindex更新。
在上面的示例中,选择Skip链接然后按
那么为什么不直接将skiplinks指向交互式元素而不是包装器呢?我尝试过,碰巧解决了IE中的错误,并在Firefox中引入了它。如果我优先考虑IE而不是FF,那就太糟糕了。
我是不是错过了什么非常明显的东西?
TAB
键时,大多数浏览器会从那一点开始顺序跳转到可聚焦的交互式或具有tabindex属性的元素:<div class="skiplinks">
<a href="#nav">Skip to Navigation</a>
<a href="#search">Skip to Search</a>
<a href="#anchor">Skip to anchor</a>
</div>
<div id="wrapper">
<p>Some boring content containing <a href="#">a selectable link</a>.</p>
<ul id="nav">
<li><a href="#">link 1</li>
<li><a href="#">link 2</li>
<li><a id="anchor">anchor with no href</li>
</ul>
<form id="search">
<input type="search" id="search-field" />
</form>
</div>
在这个示例中,当链接被点击时,“选项卡位置”会移动到文档中的该位置。然后按下“TAB”键将跳转到尝试此演示之后的下一个可聚焦元素。
除非你使用IE。 IE似乎只有在涉及到聚焦在交互式元素或定义了tabindex属性的元素时才会尊重“选项卡位置”的更改。这意味着作为“片段”或位置锚点使用的锚标签也不会导致tabindex更新。
在上面的示例中,选择Skip链接然后按
TAB
键只会跳回页面上的第一个链接。选择“跳转到锚点”然后“Tab”也会跳回顶部。这种怪癖似乎影响IE 8-11。那么为什么不直接将skiplinks指向交互式元素而不是包装器呢?我尝试过,碰巧解决了IE中的错误,并在Firefox中引入了它。如果我优先考虑IE而不是FF,那就太糟糕了。
我是不是错过了什么非常明显的东西?
更新
我已经解决了这个问题,解决方法是只创建指向具有负tabindex
值的<a>
标签的片段/跳转链接:
<a href="#destination">跳到页面下方某处</a>
<a id="destination" tabindex="-1"></a>
在Chrome,FF和IE中有效。
div
元素不是选项卡停靠点,因此行为“符合预期”。您需要解决方案还是解释? :) - muecasdiv
并不像你说的那样有效,但是锚链接呢?如果有更多细节,请告诉我。我已经解决了这个问题,但仍希望所有人都能找到解决方案 :) - Timmah