Javascript 如何预防';单击';在'之前触发的事件;dblclick';事件

Javascript 如何预防';单击';在'之前触发的事件;dblclick';事件,javascript,function,dom-events,ondblclick,Javascript,Function,Dom Events,Ondblclick,我必须处理两个事件,即“click”和“dblclick”,但是click事件总是在dblclick事件之前触发,并且不让dblclick事件执行。如何使事件正确执行“click”和“dblclick” google.maps.event.addListener(map, 'dblclick', function(event) { polygon(map, event.latLng) }); google.maps.event.addListener(map, 'click', f

我必须处理两个事件,即“click”和“dblclick”,但是click事件总是在dblclick事件之前触发,并且不让dblclick事件执行。如何使事件正确执行“click”和“dblclick”

google.maps.event.addListener(map, 'dblclick', function(event) {
   polygon(map, event.latLng)
 });


 google.maps.event.addListener(map, 'click', function(event) {
   click_events(map, event.latLng)
 });

使用setTimeout并维护timeout对象,以便在双击时将其清除

var timeoutObj;
var timeoutThreshhold = ...; //number of milliseconds to wait for double click

google.maps.event.addListener(map, 'dblclick', function(event) {
   if (timeoutObj) {
     clear timeoutObj;
   }
   polygon(map, event.latLng);
 });


 google.maps.event.addListener(map, 'click', function(event) {
   timeoutObj = setTimeout(function() {
     timeoutObj = null;
     click_events(map, event.latLng);
   }, timeoutThreadhold);
 });

不建议将处理程序绑定到同一元素的click和dblclick事件。触发的事件顺序因浏览器而异,有些浏览器在dblclick之前接收两个click事件,而另一些浏览器仅接收一个click事件。双击灵敏度(检测为双击的最大点击间隔时间)可能因操作系统和浏览器而异,并且通常是用户可配置的

您自己处理如何,这里是一个多点点击检测的示例:

let超时,n=0,延迟=250;
document.querySelector(“.clicker”).addEventListener(“单击”),函数(事件){
++n;
clearTimeout(超时);
超时=设置超时(()=>{
clickHandler.call(this,n,event);
n=0;
},延误);
//显示您在此序列中已单击多少次的视觉帮助
event.target.textContent=n;
});
//只是一些视觉上的东西
const cssNamedColors=[“栗色”、“红色”、“橙色”、“黄色”、“橄榄色”、“绿色”、“紫色”、“紫红色”、“青柠色”、“水蓝色”、“蓝色”、“海军蓝”、“黑色”、“灰色”、“银色”、“白色”];
//决定如何处理*n*次单击:
函数clickHandler(n,事件){
event.target.style.background=cssNamedColors[n-1];
event.target.textContent=n+“-”+cssNamedColors[n-1];
}
。点击器{
显示:块;
背景:#888;
填充:100px0;
文本对齐:居中;
字体大小:36px;
颜色:白色;
光标:指针;
文本阴影:-1px-1px 3px#000,1px-1px 3px#000,-1px 1px 3px#000,1px 1px 3px#000;
}

(多)单击我
设置一个变量,该变量在单击时变为true,但在单击时变为false?或者诸如此类的事情你对点击事件做了什么?可能是重复的,但这样我就不能第一次放置点击事件。我应该双击一次以使单击的变量为真,然后使用
setTimeout
函数请帮助我如何尝试,但每次双击后,它也会执行单击事件。我只想发射其中一个。双击或再次单击时
var timeoutObj;
var timeoutThreshhold = ...; //number of milliseconds to wait for double click

google.maps.event.addListener(map, 'dblclick', function(event) {
   if (timeoutObj) {
     clear timeoutObj;
   }
   polygon(map, event.latLng);
 });


 google.maps.event.addListener(map, 'click', function(event) {
   timeoutObj = setTimeout(function() {
     timeoutObj = null;
     click_events(map, event.latLng);
   }, timeoutThreadhold);
 });