0
执行两次,我一直在使用的setTimeout问题。我一直使用它很多次,它总是以我期望的方式工作。即使我把代码放在一个单独的函数中,它也可以工作,但在这种情况下它有一个奇怪的行为。的JavaScript window.setTimeout在particual情况下
这里是一个非常代码:
RoutePatternPoint.prototype.showOnMap = function(map)
{
var that = this;
google.maps.event.addListener(this.marker, "click", function(event)
{
window.setTimeout(function(){
if(RoutePatternPoint.markerDoubleClickFix === false) { doSomething(); }
RoutePatternPoint.markerDoubleClickFix = false;
},350);
});
google.maps.event.addListener(this.marker, "dblclick", function(event)
{
RoutePatternPoint.markerDoubleClickFix = true;
});
}
的问题是,谷歌地图API V3具有单时,双击事件中实现的一个错误 - 他们都被执行。
因此,解决方案是减慢单击事件,如果执行双击事件,则请参阅。如果双击事件被执行,那么我们中断单击事件。
可惜的是我的代码是不工作我想它,所以我决定写一些报警功能,并看看会发生什么的方式。你猜怎么了?单击事件中的setTimeout函数被执行两次。
你有什么解决方案什么,我做错了什么?
这有可能是超时之前经过的双击被激发。尝试增加超时时间并检查它是否仍然发生 – Kenneth 2013-05-09 18:22:46
难道双击操作实际上会触发*两个单击事件(以及双击事件)? – 2013-05-09 18:53:43
也'RoutePatternPoint.markerDoubleClickFix === FALSE'不会是真的第一次,除非你明确地设定为'FALSE'别的地方。使用'!RoutePatternPoint.markerDoubleClickFix'或'=='可能更好。 – 2013-05-09 18:58:36