Shift + mouseover с jQuery

Я пытаюсь определить, нажата ли клавиша сдвига, когда курсор перемещается по определенному элементу. Функция срабатывает, но только после первого щелчка на другом элементе. Есть ли способ обойти это? Я попытался настроить фокус как на документ, так и на элемент, и попытался создать функцию псевдо-щелчка, но до сих пор ничего не работало.

Например, следующий код работает только после нажатия на другой элемент на странице:

$("#selector").mouseover(function(e){
    if(e.shiftKey) {
        console.log("the shift key is pressed");
    }
});

Заранее благодарим за любую информацию.

Ответ 1

проверьте это в событии нажатия клавиши:

$(document).keypress(function (e) {

  if(e.shiftKey) {
    pressed = true; // pressed is a global varialbe. Be carefull of the scope
  }

}

затем на клавиатуре:

$(document).keyup(function(event){
   pressed = false;
});

то do:

$("#selector").mouseover(function(e){
    if(pressed) {
        console.log("the shift key is pressed");
    }
});

или наоборот:

$("#selector").mouseover(function(e){
    isover = true;
});

и

   $(document).keypress(function (e) {

      if(e.shiftKey) {
        alert("do something")
      }

   }

Ответ 2

Нет необходимости хранить в переменной при нажатии и отпускании клавиши shift. Вы можете добиться того, чего хотите:

$('#selector').mouseover(
    function(e){
        if (e.shiftKey)
        {
            console.log("the shift key is pressed");
        }
    }
);

Ответ 3

Я пробовал свой код, как это, и он отлично работает. Однако вам нужно "сдвинуть", а затем наведение мыши.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
    loadHandler = function(){
        $("#selector").mouseover(function(e){
            if(e.shiftKey) {
                alert("the shift key is pressed");
            }
        });
    }
</script>
</head>
<body onload="loadHandler();">
<div style="border:1px solid black" id="selector">

    <br/>
    <br/>

    This is a div.

    <br/>
    <br/>

<div>
</body>
</html>

К какому типу элемента он применяется?

Ответ 4

Рабочий образец,

MouseEvent.shiftKey, MouseEvent.ctrlKey

MouseEvent.ctrlKey

MouseEvent.shiftKey

   <img onmouseover="keypress_test(event)" onmouseout="keypress_test(event)">


    function keypress_test(event) {

             // false, no press, 
             // true, pressed

              console.log(event.ctrlKey)

              console.log(event.shiftKey)
       }