tabindex ="0"哪里HTML元素以Tab键顺序结束?

HEL*_*ELP 39 html tabindex

tabindex当网页被选项卡时,以0 为单位的元素以什么顺序聚焦?

hal*_*web 92

tabindex分配按以下方式处理(对于支持该tabindex属性的元素):

  • 正数(1,2,3 ... 32767)按Tab键顺序处理.
  • 0按源顺序处理(它出现在DOM中的顺序)
  • 标签期间忽略-1但可以调焦.

这些信息来自:http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex

  • 只是强调 - 正数处理为FIRST,然后是tabindex为0的元素和没有tabindex的tabbable元素(按源顺序). (9认同)
  • 清楚和受孕.这应该是公认的答案. (2认同)

Ala*_*avi 32

HTML规范状态:

具有相同tabindex值的元素应按它们在字符流中出现的顺序进行导航.

  • @snufey,它们出现在文档的(x)html标记中的顺序与任何顺序一样好.因此,相同"tabindex"值的两个元素将集中在第一个首先出现在标记中,然后移动到下一个(但请记住,页面上的顺序*不等于标记中的顺序 - 起来,由于css). (6认同)
  • 一系列人物. (5认同)
  • 字符流是什么意思? (4认同)

Alo*_*hci 22

这比Alan Haggai Alavi的答案要复杂一些.

在解析之后,IE8和Opera就像HTML4规范所说的那样.然而,Firefox和Chrome使用DOM命令.这对于像这样的格式错误的标记很重要.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Test case 1</title>
  </head>
  <body>
    <form>
      <table>
        <tr><td><input id="first" value="first in the character stream" tabindex="0"></td></tr>
        <div><input id="second" value="second in the character stream" tabindex="0"></div>
      </table>
    <form>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可能会争辩说,由于格式错误,所有投注都会被取消,那么JavaScript呢?

考虑这种情况:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Test case 2</title>
    <script type="text/javascript">
      moveFirst = function()
      {
        var f = document.getElementById("first");
        f.parentNode.removeChild(f);
        document.body.appendChild(f);
      }
    </script>
  </head>
  <body>
    <form>
      <table>
        <tr><td><input id="first" value="first in the character stream" tabindex="0"></td></tr>
        <tr><td><div><input id="second" value="second in the character stream" tabindex="0"></div></td></tr>
      </table>
    <form>
    <div onclick="moveFirst()">move</div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当用户点击"移动"时,IE8,Firefox,Chrome和Opera都使用DOM顺序,而不是字符流顺序.

最后,HTML5几乎不能保证tabindex为0的元素之间的Tab键顺序,只是声明它应该遵循平台约定.