ShiftKey mouseEvent无法识别按下的键

时间:2018-02-14 18:04:31

标签: javascript google-maps mouseevent

我有这个功能,在gogole地图圈,这是完美的。但现在它不再检测shiftKey,总是返回false,我不知道为什么 还尝试了v=3v=3.25v=3.26v=3.30v=3.31

<script src="//maps.googleapis.com/maps/api/js? 
 v=3.30&key=XXX&libraries=drawing&callback=initMap"></script>


if (myCondittion) {
         myObj.addListener('click', function (event) {
            if (!shiftKeyPressed(event)) {
               //DoSOmething

            }
            } else {
               //DoSomethingElse
            }
         });
}


function shiftKeyPressed(event) {

   for (var key in event) {
      if (event[key] instanceof MouseEvent) {
         event["mouseEvent"] = event[key];
      }
   }

   var isPressed = event["mouseEvent"].shiftKey;
   console.log( event["mouseEvent"] );
   return isPressed;
}

1 个答案:

答案 0 :(得分:0)

我想补充一点,我也有使用shiftkey,altkey和ctrlkey这个问题。我正在进行实验版本,直到大约一周前发布这个版本时,它工作正常。

作为一种解决方法,我创建了全局变量:

var _keydownEvent;

var setKeydownEvent = function(e){
  _keydownEvent = e;
}

var getKeydownEvent = function(){
  return _keydownEvent;
}

app.setKeydownEvent = setKeydownEvent;
app.getKeydownEvent = getKeydownEvent;

全球听众:

$(window).bind('keydown', function(e){
  app.setKeydownEvent(e);
});

$(window).bind('keyup', function(e){
  app.setKeydownEvent(e);
});

在我的地图中:

getCtrlKeyStatus: function(e) {
  var ret = false;
  var global_event = app.getKeydownEvent();

  if (typeof(global_event) === 'object'  && global_event.ctrlKey) {
    ret = true;
  }
  return ret;
},