当网页使用tab键切换时,
tabindex
值为0的元素的聚焦顺序是什么?tabindex
属性赋值的处理方式如下(对于支持 tabindex
属性的元素):
本信息摘自:http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex
tabindex
属性的元素”这部分并不是很清晰,因为在当前的HTML规范(WHATWG: https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute)中,它被定义为全局属性,只是历史上浏览器(例如Internet Explorer)没有将其纳入非交互元素的考虑范围。 - Volker E.focus()
方法以编程方式聚焦元素外,该元素还可以通过点击进行聚焦(不确定是否所有浏览器都支持此功能)。
https://html.spec.whatwg.org/multipage/interaction.html#click-focusable - MajeSticHTML规范指出:
具有相同tabindex值的元素应按照它们在字符流中出现的顺序进行导航。
tabindex
值的两个元素将首先聚焦于在标记中首先出现的元素,然后移动到下一个元素(但要记住,由于css,页面上的顺序不等同于标记中的顺序)。因此,“@snufey”所说的内容是这样的。 - David Thomas这比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>
<!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>
tabindex="0"
可以包括在Web浏览器中的非页面元素,例如URL地址栏。
已在Firefox 32.03中测试。