【发布时间】:2016-11-05 19:37:54
【问题描述】:
考虑像this这样的情况:
<a href="#">
<div tabindex="0">Tab focus me, then ⏎</div>
</a>
如果我专注于 <div /> 并按 Enter 键,我会在主要桌面浏览器 (OS X Yosemite) 上获得不同的行为:
- Chrome 54.0.2840.71:父链接未激活。
<a />和子<div />都可以通过选项卡单独选择。 - Firefox 48.0.2:
<a />本身似乎无法选择,但可以通过关注<div />来激活链接。 - Opera 39.0:与 Chrome 相同的行为。
- Safari 9.1.2:与Firefox一样,
<a />本身无法选择,但选择<div />时,链接不是 EM>激活。
既然<a /> 不能嵌套,有没有办法让一个有焦点的子元素在没有Javascript 的情况下跨浏览器激活父链接? Javascript 选项很明显,但我发现它有点令人难以置信,这么简单的东西就需要它。
【问题讨论】:
-
我认为您正在尝试解决一个不存在的问题。您是否有示例页面或描述您想要实现的目标?在您的示例中,
tabindex完全没有必要,因为<a>将获得焦点,并且没有其他子元素可以发挥作用。因此需要一个真实的例子或场景。 -
这里的大局是什么 - 为什么要尝试嵌套交互式元素?你能举例说明这个 UI 在现实世界中的样子吗?可能有另一种获得最终结果的方法可以避免这种情况......
-
很抱歉没有一个非玩具示例,我正在制作一个更具说明性的示例。
-
在实现this example的过程中,我看到没有这个必要。最初,我打算让整个卡片可以点击“阅读更多”作为鼠标用户的目标——该链接为屏幕阅读器用户提供更多上下文。最后,“阅读更多”的链接就足够了。
标签: html hyperlink accessibility tabindex