Клавиша управления обнаружением Javascript, удерживаемая при наведении мыши - PullRequest
16 голосов
/ 31 июля 2009

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

Пока я использую 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);
}

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

1 Ответ

32 голосов
/ 31 июля 2009

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

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

Проверьте работающий пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...