使用setTimeout实现双击事件。例如,这样:letdiv=document.getElementById("div");doubleClick(div,function(event){console.log('double-click')})functiondoubleClick(ele,fn){//省略参数合法性判断letevent=newEvent("doubleClick");//自定义双击事件(可以使用CustomEvent携带数据)//双击事件监听ele.addEventListener("doubleClick",function(event){fn(event);});//双击事件触发lettimeout;让点击=假;//被点击一次ele.addEventListener("click",function(){if(clicked){clicked=false;if(timeout){clearTimeout(timeout);}ele.dispatchEvent(event);//Eventdispatch}else{clicked=true;timeout=setTimeout(function(){clicked=false;},400);}});}使用数组双击事件或n-click事件的实现灵感来自于Android系统中的多点触发彩蛋。前端方法是这样实现的:letdiv=document.getElementById("div");multiClick(div,function(event){console.log('doubleclick')},2)functionmultiClick(ele,fn,clickNum){//省略参数合法性判断letevent=newEvent("multiClick");//创建n-click事件(可以使用customEvent携带数据)lethits=[];//n-click事件监听器ele.addEventListener("multiClick",function(event){fn(event);});//n点击事件触发ele.addEventListener("click",function(){letnow=newDate().getTime();hits.push(now);if(hits.length>1){if(hits[0]+500>now){if(hits.length===clickNum){hits=[];ele.dispatchEvent(event);//事件派发}}else{hits.shift();}}});}
