Javascript: event.what/button возвращает неправильное значение при наведении мыши

При вызове event.button для события jQuery mouseup обычно возвращается 0 для щелчка левой кнопкой мыши и 2 для щелчка правой кнопкой мыши.

Однако, если вы нажимаете и удерживаете левый щелчок, а затем щелкаете правой кнопкой мыши, event.button всегда возвращает 2 после отпускания левого щелчка. Это делает невозможным определение того, какой щелчок был отпущен первым, пока не будут отпущены оба щелчка. Та же проблема с event.what.

У кого-нибудь есть обходной путь для этого? Не могу найти никаких сообщений об этой ошибке.

Редактировать: я знаю, как обычно определять, какой ключ выпускается. Проблема в том, что mouseup сообщает неправильные значения. Чтобы воспроизвести эту проблему:

Нажмите и удерживайте левую кнопку мыши. Нажмите и удерживайте правую кнопку мыши. Отпустите левый щелчок. Это вызывает событие mouseup. Вызов event.button Ожидание: 0, Факт: 2


person user3762050    schedule 21.06.2014    source источник
comment
Не могли бы вы опубликовать код.   -  person Praveen Reddy    schedule 21.06.2014
comment
неясно, какие шаги воспроизводят проблему. Если это делается быстро (удерживайте левую кнопку мыши и удерживайте правую кнопку мыши сразу после отпускания левой мыши), кажется, что onmouseup не срабатывает, в противном случае (есть определенная задержка между отпусканием левой мыши и нажатием правой мыши) срабатывает onmouseup и e.which возвращает правильное значение. Так что ваша проблема не ясна.   -  person King King    schedule 21.06.2014
comment
демо, чтобы попробовать его самостоятельно.   -  person King King    schedule 21.06.2014


Ответы (1)


Я думаю, вы используете:

<script type="text/javascript">
$(document).ready(function(){ 
  $(document).mousedown(function(e){ 
    if( e.button == 2 ) { 
      alert('Right mouse click.'); 
      return false; 
    }
    if(e.button == 0) {
        alert('Left mouse click.');
        return false;
    }
    return true; 
  }); 
});

person tungbk29    schedule 21.06.2014