什么是正确的W3C Click事件规范?

时间:2015-12-01 20:45:20

标签: javascript html5 webkit w3c qtwebkit

在Firefox或以前版本的QTWebkit中,在这些情况下不会触发点击事件,这是正常的:

  • mousedown on element> mouse元素上的mouseup>>>没有点击触发
  • mousedown on child element>父元素上的mouseup>>>没有点击触发

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是否正确执行了规范。 那么它应该触发事件吗?

1 个答案:

答案 0 :(得分:0)

事实上,Firefox的行为与IE和Chrome有所不同,后者可以点击“点击”。当mousedownmouseup发生在不同的元素上时,在共同的祖先(?)上。浏览器供应商的投票是:

  • Mozilla bug 1229143(&#34;没有在两个元素的共同祖先上接收点击事件&#34;) - 没有做出决定
  • Chrome issue 484655 合并到543776(&#34;停止发送&#34;点击&#34;鼠标拖过元素&#34;) - 没有&#39 ; t打算改变他们的行为。
  • IE bug 809003移至Edge issue #103724(&#34;当mousedown和mouseup事件中光标下方的元素不同时触发了意外点击事件&#34;) - 标记为已修复而没有任何评论(我没有& #39; t测试是否确实如此)

我认为即使是最新版本的规范(现在称为The UI Events)也不清楚:

  

当用户按下并释放主指针按钮时,必须在指针指示的最顶层事件目标上调度click事件类型[...]

你可能会认为这意味着指针所指示的最顶层事件目标&#34; mousedown和mouseup是一样的,但它不清楚。

稍后在一个例子中有这样的文字:

  

触发点击事件[..],因为用户已停留在同一元素的范围内。

...支持这样的假设,即规范作者的意图与Firefox中实现的内容一致。