Javascript 是否可以在dblclick事件上检测ctrl键状态
我正在使用谷歌地图API第3版。我希望双击事件处理程序按如下方式工作: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信息,所以我怀疑我
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,则事件将丢失