Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在dblclick事件上检测ctrl键状态_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

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

Javascript 是否可以在dblclick事件上检测ctrl键状态,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在使用谷歌地图API第3版。我希望双击事件处理程序按如下方式工作: google.maps.event.addListener(map, 'dblclick', function(e) { if (/* ctrl is pressed */) { doSomething(e) } else { doSomethingElse(e) } }); 看起来,事件处理程序只提供了一个MouseEvent,其中不包含有关键盘状态的信息。我需要LatLng信息,所以我怀疑我

我正在使用谷歌地图API第3版。我希望双击事件处理程序按如下方式工作:

google.maps.event.addListener(map, 'dblclick', function(e) {
  if (/* ctrl is pressed */) {
    doSomething(e)
  } else {
    doSomethingElse(e)
  }
});
看起来,事件处理程序只提供了一个MouseEvent,其中不包含有关键盘状态的信息。我需要LatLng信息,所以我怀疑我是否可以使用JQuery的事件处理


我在这里运气不好吗?

您可以缓存控制键状态

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

现在,
ctrlPressed
应该总是反映控制键是否按下。

当缓存按键时,我总是将一个函数绑定到窗口对象的模糊事件,该事件清除任何缓存按键。否则,如果窗口失去焦点,钥匙就会卡住

下面是一个使用jQuery的示例:

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

我想您可以保留一个全局变量,该变量表示是否按下ctrl键,并使用jQuery事件处理更新它。我担心keyup/keydown事件发生在视图端口之外的情况,例如在地址栏中,但不管怎样,下面的操作似乎都是可行的。这是我的代码,基本上就是你展示的。var ctrlKey=假$(窗口).keydown(函数(e){ctrlKey=e.ctrlKey;}).keydup(函数(e){ctrlKey=e.ctrlKey;});}clarkf和Lawrence Barsanti在FF、IE和Windows Chrome上的工作。在Ubuntu Chrome上,布尔值是向后的?在Windows Chrome上,如果鼠标指针在Chrome窗口外时释放Ctrl,则事件将丢失