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

Kid*_*rla 5 html html5 focus keyboard-navigation

有没有人有一个不可列表的HTML(HTML5)元素列表,即使指定了tabindex?(通过tabbable,我的意思是他们可以通过反复按"tab"键来获得焦点.)

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

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

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

Kid*_*rla 9

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

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

不幸的是,由于我只花了几个小时试图写这个列表,它有一些警告:

  1. 未在Chrome以外的任何浏览器上测试过
  2. 我跳过了大多数我认为可能会出现的元素(因为它们会显示正常的内容)
  3. 我没有尝试设置任何这些显示(除了<title>我的评论)

我最惊讶的是以下元素可能的:

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


Kor*_*nel 7

HTML规范列出了元素可聚焦的条件以及如何解释tabindex.

  • 设置元素的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>
Run Code Online (Sandbox Code Playgroud)

顺便说一句:忽略W3Schools - 通常这不是一个可靠/权威的来源.