2010-10-21 56 views
2

我使用谷歌地圖API第3版。我想我的雙擊事件處理程序作爲工作Ctrl鍵的狀態如下:是否有可能以檢測DBLCLICK事件

google.maps.event.addListener(map, 'dblclick', function(e) { 
    if (/* ctrl is pressed */) { 
    doSomething(e) 
    } else { 
    doSomethingElse(e) 
    } 
}); 

它只是看起來事件處理程序提供了一個不包含有關鍵盤狀態信息的MouseEvent。我需要LatLng信息,所以我懷疑我可以使用JQuery的事件處理。

我在這裏運氣不好嗎?

+0

我想你可以保持一個全局變量,如果CTRL被按下,說和使用jQuery事件處理 – Adam 2010-10-21 19:00:06

回答

5

你可以只緩存控制按鍵狀態

var ctrlPressed = false; 
function cacheIt(event) { 
    ctrlPressed = event.ctrlKey; 
} 
document.onkeydown = cacheIt; 
document.onkeyup = cacheIt; 

現在,ctrlPressed應處處體現出控制鍵是否已關閉。

+0

我擔心的情況進行更新,其中的KEYUP/KEYDOWN事件發生在視圖端口之外,就像在地址欄中一樣,但以下似乎無論如何工作。下面是我的代碼,它基本上是你展示的。 var ctrlKey = false; $(window).keydown(function(e){ctrlKey = e.ctrlKey; })。keyup(function(e){ ctrlKey = e.ctrlKey; }); } – 2010-10-22 04:10:07

+1

clarkf和Lawrence Barsanti在Windows上的FF,IE和Chrome上的工作。在Ubuntu Chrome上,布爾值是向後的? – TrailDEX 2013-01-04 09:01:47

+0

這與TomWardrop的回答最好配合使用 – Samveen 2014-12-24 06:15:55

2

緩存按鍵時,我總是將一個函數綁定到窗口對象的blur事件,該事件清除任何緩存的按鍵。否則,如果窗口失去焦點,則會卡住鑰匙。

下面是使用jQuery的例子:

$(window).blur(function() { 
    // Clear cached key presses here 
}) 
相關問題