即使使用tabindex,哪些HTML元素也不可标记?

时间:2013-01-04 15:24:33

标签: html html5 focus keyboard-navigation

是否有人列出了可列表的HTML(HTML5)元素,即使指定了tabindex? (通过tabbable,我的意思是他们可以通过反复按“tab”键来获得焦点。)

我们知道默认情况下有些元素可以列表,例如inputtextarea。我们还知道,如果明确指定了tabindex,则某些元素只能是tabbable,例如divspan元素。

根据W3Schools的说法,“在HTML5中,tabindex属性可用于任何HTML元素”。但是,肯定有一些元素即使它们有tabindex也不能表示。例如,param元素可以是tabbable或head元素是没有意义的。我也不认为option元素可能是可能的,但我不确定。而且我对map之类的东西更不确定,它们可以包含可列表元素但通常不会自行列表。

有人可以给我一个列表,列出即使有tabindex也无法获得焦点的所有元素吗?

2 个答案:

答案 0 :(得分:8)

由于还没有人提出任何明确的清单,我在一个相当新版本的Chrome上做了一些测试,并提出了以下无法列表的元素列表:

  • <base>
  • <basefont>
  • <embed>
  • <head>
  • <link>
  • <meta>
  • <object>
  • <param>
  • <source>
  • <style>
  • <title>
  • <track>

不幸的是,由于我只花了几个小时试图写这个清单,所以有一些注意事项:

  1. 未在Chrome以外的任何浏览器上测试
  2. 我跳过了大部分我认为可能会出现的元素(因为它们会显示正常的内容)
  3. 我没有尝试设置任何这些内容(除了<title>,如我的评论中所述)
  4. 我非常惊讶以下元素 可标记:

    • <audio><video>(感到惊讶,因为<embed><object>不是)
    • <br><wbr>
    • <col><colgroup>
    • <frame><frameset>(虽然它们更像是一种特殊情况,因为它们在HTML中并不是技术上有效的元素)
    • <html>(从标签的角度来看,这与<body>几乎没有区别)
    • <optgroup><option>(虽然标签不会给出任何视觉指示 - 即选择框无法打开)

答案 1 :(得分:7)

The HTML spec lists conditions under which elements are focusablehow tabindex is interpreted

  • 设置了元素的tabindex焦点标志。
  • 元素要么被渲染,要么是表示嵌入内容的canvas元素的后代。
  • 元素或其任何祖先都不是惰性的。
  • 该元素未被禁用。

该定义依赖于呈现的元素,使用CSS可以使呈现任何元素。例如,可聚焦<param>甚至<title><basefont>

<!DOCTYPE>
<title tabindex=0>Test</title>
<basefont tabindex=0>
<style>
head, title {display:block}
basefont, param {content: url(image.png);}
</style>
<object><param tabindex=0></object>
BTW:忽略W3Schools - 通常不是一个可靠/权威的来源。