tabindex
当网页被标签时,值为 0的元素以什么顺序聚焦?
问问题
63134 次
4 回答
106
tabindex
分配按以下方式处理(对于支持该tabindex
属性的元素):
- 正数 (1,2,3...32767) 按 Tab 顺序处理。
- 0 按源顺序处理(它出现在 DOM 中的顺序)
- -1 在制表符期间被忽略,但可聚焦。
此信息取自:http ://www.w3.org/TR/html401/interact/forms.html#adef-tabindex
于 2013-06-14T17:09:42.023 回答
41
HTML 规范指出:
具有相同 tabindex 值的元素应该按照它们在字符流中出现的顺序进行导航。
于 2010-11-07T00:52:06.410 回答
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>
您可能会争辩说,无论如何,对于格式错误的标记,所有的赌注都是错误的,那么 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>
在这种情况下,当用户点击“移动”时,IE8、Firefox、Chrome 和 Opera 都使用 DOM 顺序,而不是字符流顺序。
最后, HTML5几乎不保证 tabindex 为 0 的元素之间的 tab 顺序,只是声明它应该遵循平台约定。
于 2010-11-07T01:54:48.507 回答
0
tabindex="0"
可以包括对 Web 浏览器的非页面元素的标签,例如 URL 地址栏。
测试为 Firefox 32.03 的情况。
于 2014-10-13T02:38:04.717 回答