Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是正确的W3C点击事件规范?_Javascript_Html_Webkit_W3c_Qtwebkit - Fatal编程技术网

Javascript 什么是正确的W3C点击事件规范?

Javascript 什么是正确的W3C点击事件规范?,javascript,html,webkit,w3c,qtwebkit,Javascript,Html,Webkit,W3c,Qtwebkit,在Firefox或以前版本的QTWebkit中,在以下情况下不触发单击事件是否正常: 元素上的鼠标向下移动>子元素上的鼠标向上移动>>>未触发单击 子元素上的鼠标向下移动>父元素上的鼠标向上移动>>>未触发单击 测试URL: document.getElementById(“测试”).addEventListener(“单击”,函数)(){ 警报(“正常”); }) div{ 填充:20px; 背景:红色; } 事实上,Firefox的行为与IE和Chrome不同,IE和Chrome在

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

  • 元素上的鼠标向下移动>子元素上的鼠标向上移动>>>未触发单击
  • 子元素上的鼠标向下移动>父元素上的鼠标向上移动>>>未触发单击

测试URL:

document.getElementById(“测试”).addEventListener(“单击”,函数)(){
警报(“正常”);
})
div{
填充:20px;
背景:红色;
}

事实上,Firefox的行为与IE和Chrome不同,IE和Chrome在
mousedown
mouseup
发生在不同元素上时,会对共同祖先(?)发出“点击”。浏览器供应商的投票结果如下:

  • (“未收到两个元素的共同祖先的点击事件”)-未做出任何决定
  • 合并到(“停止发送”点击“鼠标拖动元素”)-不打算更改其行为
  • 移动到(“当鼠标向下和鼠标上的光标下面的元素不同时触发意外的点击事件”)-标记为已修复,没有任何注释(我没有测试它是否确实是)
我认为,即使是最新版本的规范(现在称为)也不清楚这一点:

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

您可能会争辩说,这意味着“指针指示的最上面的事件目标”对于mousedown和mouseup是相同的,但这并不清楚

在后面的示例中,有以下文本:

触发一个点击事件[…],因为用户一直在同一元素的范围内


…这支持了一个假设,即规范作者的意图与Firefox中实现的一致。

两种不同的浏览器,两种不同的做事方式。一个比另一个更正确。