javascript - IE 问题 : wrong tab focus

标签 javascript html css internet-explorer accessibility

我在页面的最顶部有一个名为“Skip Navigation”的链接,每次用户按 Tab 键时都会出现在屏幕上,如果他在“Skip Navigation”处于焦点状态时按 Enter,它会将他带到#main 页面的一部分,这样他就可以跳过顶部导航并直接进入主要区域。这一切在 Chrome、Firefox、Safari 中都能完美运行。该问题出现在 IE 中(我测试了 ie9 和 ie11)。

Scenario in IE:

Presses Tab - "Skip Navigation" appears on the page - presses Enter - refreshes the page with #main added into the url - presses Tab - "Skip Navigation" appears on the page

有谁知道 IE 强制跳过导航并转到页面主要部分的解决方案吗?任何帮助将不胜感激。

#skip a {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

#skip a:focus {
  left: auto;
  font-size: 20px;
  position: static;
  width: auto;
  height: auto;
}

nav {
  background: #847577;
  color: white;
  padding: 1em;
  text-align: center;
}

nav a {
  color: white;
}

#main {
  background: #E5E6E4;
  padding: 1em;
}

#main a {
  color: black;
}
<div id="skip"><a href="#main">Skip navigation</a></div>
<nav>
  <a href="/">Home</a>
  <a href="/">About Us</a>
</nav>
<div id="main">
  Main Content On The Page <a href="/">Link</a>
</div>

jsfiddle:https://jsfiddle.net/13p0eo43/

最佳答案

如果它不能按照您描述的标准方式工作,我认为您有两种选择:

  1. 使用 JavaScript .focus() 方法聚焦#main 之后的第一个可聚焦元素。您在这里的困难在于确定必须关注哪个元素,因为它可能并不总是那么简单。
  2. 在#main 上设置 tabindex=-1 并在单击链接时使用 JavaScript .focus() 方法聚焦#main。下次用户按下 tab 键时,下一个可聚焦的元素将获得焦点,并且 #main 在按下 shift+tab 时无法再次聚焦(因为值为 -1)。

关于javascript - IE 问题 : wrong tab focus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716102/

相关文章:

javascript - jQuery 等高响应 div 行

javascript - 如何使用 Promise Map 实现嵌套循环

html - 最小高度为 100% 且内容垂直居中的 CSS 扩展部分

JavaScript:如何访问给定的 URL,而无需在浏览器中打开其网页

jquery - 为什么我的 serialScroll 不工作?

javascript - 在 mongodb shell 上更新 forEach

Javascript 使用显式的 self/window 对象来提高性能

javascript - 快速资源,以了解有关所有JS高度的更多信息

jquery - Primefaces 下拉图标对齐方式?

html - 如何停止在 div 中切断内容