对于标签中的属性,在ie中表现不同

时间:2013-09-04 13:56:22

标签: html css

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

// 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>

2 个答案:

答案 0 :(得分:1)

来自HTML5 specification

  

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

     

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

     

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

     

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

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

例如,如果我没记错的话,在Windows中单击标签时(在Wdinows表单中),复选框也会收到点击,这就是在Windows中运行的浏览器中应该发生的事情。

同样,由于有很多自由,几乎每个浏览器都会按照自己喜欢的方式行事。

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

<label for="test">
    <a href="#" onclick="show(); return false;">jitender</a>
</label>

答案 1 :(得分:0)

做了一些改变,继承人fiddle 通过

删除了标签中的链接
<label for="test" onclick="javascript:show()"> jitender</label>