Подтвердить что ты не робот

Контрольный ключ обнаружения Javascript, удерживаемый на Mouseup

Я много искал и не могу найти удовлетворительного решения. Надеюсь, кто-то может помочь.

Пока я использую jQuery, я также пишу много тысяч строк Javascript. Таким образом, "чистое" javascript решение просто отлично.

Я пытаюсь определить, физически удерживается ли управляющий ключ в событии mouseup. Это; других предпосылок нет. Кто-нибудь знает, как сделать это надежно, кросс-браузер?

Я попытался сохранить это в переменной состояния, отметив, когда клавиша нажата и отпущена:

// BEGIN store control key status in hash_state
$().bind('keydown','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = true;
  console.debug( hash_state.sw_ctrldn );
});
$().bind('keyup','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = false;
  console.debug( hash_state.sw_ctrldn );
});
// END store control key status in hash_state

Однако это действительно не работает. Если вы проверите это с помощью Firebug и посмотрите консоль, вы увидите, что происходит автоматический повтор, и значение переключается.

Я проверил событие mouseup, чтобы узнать, есть ли что-нибудь полезное, но безрезультатно:

var debugEvent = function( arg_obj_e ){
  var str = '';
  for ( var attr in arg_obj_e ){
    str += attr + ': ' + arg_obj_e[attr] + '\n';
  }
  console.debug(str);
}

Любая помощь будет оценена.

4b9b3361

Ответ 1

Вы можете использовать свойство event.ctrlKey.

$(function(){
  $('#elementId').mouseup(function(e){
    var isCtrlPressed = e.ctrlKey;
    // true or false whether ctrl is pressed or not 
  });
});

Проверьте приведенный ниже пример .