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