W3Schools有这个说 标签:
该 <label>
tag定义了一个标签 输入 元件。
[强调我的]
这是否意味着以下HTML无效?
<html>
<body>
<label for="x">Label</label>
<hr>
<div id="q" contentEditable="true">Hello</div>
<hr>
<div id="x" contentEditable="true">World</div>
</body>
</html>
Chrome和IE8都重点关注 World
什么时候 Label
单击,Firefox没有。
哪个是对的?
根据 W3C 它适用于表单控件,表单控件是 定义为:
- 纽扣
- 复选框
- 单选按钮
- 菜单
- 文字输入
- 文件选择
- 隐藏的控件
- 对象标签
所以FireFox在技术上是正确的,尽管如果浏览器没有将它限制在那些元素中,我几乎不会认为它“破坏”。
根据 W3C 它适用于表单控件,表单控件是 定义为:
- 纽扣
- 复选框
- 单选按钮
- 菜单
- 文字输入
- 文件选择
- 隐藏的控件
- 对象标签
所以FireFox在技术上是正确的,尽管如果浏览器没有将它限制在那些元素中,我几乎不会认为它“破坏”。
HTML规范说,关于 label
's“for”属性,“当存在时,此属性的值必须与同一文档中某个其他控件的id属性的值相同。如果不存在,则定义的标签与元素的内容相关联。 “
因此“for”中的id引用应该是控件的id引用。什么是控制?规范基本上说是任何 input
是一个控件,原样 button
, select
, 要么 object
。所以Firefox在技术上是正确的 - 一个 div
不是一个控制。