Javascript 如何区分点击+;拖动与双击+;拖曳

Javascript 如何区分点击+;拖动与双击+;拖曳,javascript,Javascript,我的项目需要区分单击、双击、单击+拖动和双击+拖动。我现在已经可以区分前3个事件,但不知道如何检测双击+拖动。有什么想法吗 var-holdStarter=null; var holdDelay=500; var-holdActive=false; 函数onMouseDownEssentials(){ holdStarter=setTimeout(函数(){ holdStarter=null; holdActive=true; log(“单击并拖动”); },延迟); } 关于MouseUpEs

我的项目需要区分单击、双击、单击+拖动和双击+拖动。我现在已经可以区分前3个事件,但不知道如何检测双击+拖动。有什么想法吗

var-holdStarter=null;
var holdDelay=500;
var-holdActive=false;
函数onMouseDownEssentials(){
holdStarter=setTimeout(函数(){
holdStarter=null;
holdActive=true;
log(“单击并拖动”);
},延迟);
}
关于MouseUpEssence(el)的功能{
如果(保持起动机){
clearTimeout(holdStarter);
if(el.getAttribute(“数据dblclick”)==null){
el.setAttribute(“数据dblclick”,1);
设置超时(
函数(){
if(el.getAttribute(“数据dblclick”)==1){
console.log(“单击一次”);
}
删除属性(“数据dblclick”);
}, 300);
}否则{
删除属性(“数据dblclick”);
console.log(“双击”);
}
}else if(保持活动状态){
log(“单击并拖动完成”);
holdActive=false;
}
}

我删除了一个超时,并添加了一个变量dragTarget来跟踪被拖动的元素

var-holdStarter=null;
var dblDelay=300;
var holdDelay=500;
var-holdActive=false;
var dragTarget=null;
var dbl=“数据dblclick”;
window.addEventListener('mousedown',函数(e){
dragTarget=e.目标;
holdStarter=新日期().valueOf();
});
window.addEventListener('mouseup',函数(e){
var el=e.target;
var holdActive=(新日期().valueOf()-holdStarter)>holdDelay;
如果(保持激活){
if(el.getAttribute(dbl)==null){
console.log(“拖动完成”);
}否则{
log(“双重拖动完成”);
删除属性(dbl);
}
holdActive=false;
}else if(el.getAttribute(dbl)==null){
el.setAttribute(dbl,1);
setTimeout(函数(){
if(el.getAttribute(dbl)==1&&!dragTarget){
console.log(“单击一次”);
删除属性(dbl);
}
},dbldeley);
}否则{
console.log(“双击”);
删除属性(dbl);
}
dragTarget=null;

});谢谢你的回答,你的代码的问题是,无论我点击或双击后,双击完成,它总是显示双击。抱歉的错误。。。已经修好了。