0

对于属性在 IE9 和 IE10 中的执行方式不同。当我点击标签时,它也在 IE 中被选中,但在其他浏览器中它不会。小提琴

//JS

  <script type="text/javascript">
    function show(){
    alert(0);
    }
    </script>

//HTML

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><input type="checkbox" id="test" /></td>
    <td><label for="test"><a href="javascript:show()">click</a></label></td>
  </tr>
</table>
4

2 回答 2

1

HTML5 规范

标签元素的确切默认表示和行为,特别是它的激活行为可能是什么,如果有的话,应该 与平台的标签行为相匹配。对于针对标签元素的交互式内容后代以及这些交互式内容后代的任何后代的事件,标签元素的激活行为必须不执行任何操作。

例如,在单击复选框标签选中复选框的平台上,单击以下代码段中的标签可能会触发用户代理在输入元素上运行合成单击激活步骤,就好像元素本身已由用户触发一样:

[...剪切代码示例...]

在其他平台上,行为可能只是集中控制,或者什么都不做。

规范似乎留下了很大的自由,尽管基本上,他们说点击标签时,如果浏览器真的必须做某事,那么它应该做当前平台上通常发生的事情。

例如,如果我没记错的话,在 Windows 中,当您单击标签(以 Wdinows 形式)时,复选框也会收到单击,因此在 Windows 中运行的浏览器中应该会发生这种情况。

同样,由于有很大的自由度,几乎每个浏览器都会做自己喜欢的事情。

如果不是很清楚的问题是如何避免这种行为,您可能必须使用 jquery 或 javascript 以某种方式解决它。在 IE10 中进行第一次快速测试后,这似乎可行:

<label for="test">
    <a href="#" onclick="show(); return false;">jitender</a>
</label>
于 2013-09-04T14:16:58.663 回答
0

做了一些更改,尽管小提琴 从标签中删除了链接

<label for="test" onclick="javascript:show()"> jitender</label>
于 2013-09-04T14:02:58.960 回答