2013-01-22 222 views
0

如何在用戶停止使用鼠標後觸發事件?因爲我不想在縮放期間調用我的ajax(例如,6個放大插件會觸發6個事件,但是當放大完成時我只需要1個事件)如何在用戶停止觸發事件後觸發事件

此函數延遲執行,儘管如此,它仍執行所有的事件......

google.maps.event.addListener(map, 'center_changed', function() { 
    // 3 seconds after the center of the map has changed 
    window.setTimeout(function() { 
     myfunction()); 
    }, 3000); 
    }); 
+1

有可能是沒有這樣的事件,但你可以在每個鼠標移動,縮放或任何清除超時,如果它不被清除,用戶did'nt 3秒鐘做任何事,和函數執行等 – adeneo

+0

那解決了我的問題!每當觸發器觸發時,我都會這樣做:'clearInterval(trigerFunctionVar); trigerFunctionVar = null;'然後將新的Interval添加到'trigerFunctionVar'。奇蹟般有效!請添加爲答案,以便我可以選擇它。 – Andrew

回答

-1

我解決了這個問題:

每次觸發器被觸發,我這樣做:clearInterval(trigerFunctionVar);trigerFunctionVar=null;,然後添加新的時間間隔,以trigerFunctionVar

0

你能使用offsetLeft和的offsetTop計算鼠標光標x和y位置,然後執行你的事件後,他們並沒有爲在短時間內改變了嗎?

0
var lastTriggeredTime; 
google.maps.event.addListener(map, 'center_changed', function() { 
    // 3 seconds after the center of the map has changed 
    window.setTimeout(function() { 
     //set last Triggered Time to now (user is still zooming) 
     lastTriggeredTime = (new Date()).getTime(); 
     myfunction()); 
    }, 1000); 
    }); 
var myfunction = function(){ 
    if(lastTriggeredTime + 3000 < (new Date()).getTime()){ 
    //3 seconds has elapsed since last center_changed event got fired. 
    } 
}