是否可以在dblclick事件上检测ctrl键状态

时间:2010-10-21 18:53:41

标签: javascript google-maps google-maps-api-3

我正在使用Google maps API版本3.我希望我的双击事件处理程序能够按如下方式运行:

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

它看起来事件处理程序只提供一个MouseEvent,它不包含有关键盘状态的信息。我需要LatLng信息,所以我怀疑我可以使用JQuery的事件处理。

我在这里运气不好吗?

2 个答案:

答案 0 :(得分:5)

您可以只缓存控制键状态

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

现在,ctrlPressed应始终反映控制键是否已关闭。

答案 1 :(得分:2)

当缓存按键时,我总是将一个函数绑定到window对象的blur事件,该事件清除所有缓存的按键。否则,如果窗口失去焦点,则会出现卡住的问题。

以下是使用jQuery的示例:

$(window).blur( function () {
  // Clear cached key presses here
})