在Firefox或以前版本的QTWebkit中,在这些情况下不会触发单击事件,这是正常的:
http://www.w3.org/TR/DOM-Level-3-Events/#event-type-click https://bugzilla.mozilla.org/show_bug.cgi?id=326851
测试网址:http://jsfiddle.net/3d6dzr02/
document.getElementById("test").addEventListener("click",function(){
alert("ok");
})
div {
padding:20px;
background:red;
}
<div id="test">
<div style="margin:20px; background:yellow;">
</div>
</div>
适用于最后的chrome版本
我不知道chrome是否正常,或者Firefox是否正确执行了规范。它应该触发事件吗?
事实上,Firefox与IE和Chrome的行为不同,当mousedown
和mouseup
发生在不同元素上时,它会触发共同祖先(?)的“点击”。浏览器供应商的投票是:
我认为即使是最新版本的规范(现在称为The UI Events)也不清楚这个:
当用户按下并释放主指针按钮时,必须在指针指示的最顶层事件目标上调度click事件类型[...]
您可能会认为这意味着“指针指示的最顶层事件目标”对于mousedown和mouseup是相同的,但它并不清楚。
稍后在一个例子中有这样的文字:
触发click事件[..],因为用户已停留在同一元素的范围内。
...支持这样的假设,即规范作者的意图与Firefox中实现的内容一致。