Среднее событие нажатия кнопки

У меня есть этот бит кода в моем расширении Chrome, поэтому я могу использовать <div href="url"> как ссылку. Раньше это работало так, как ожидалось. (Слева - открыть текущую вкладку, Средняя - открыть на новой вкладке). Теперь он регистрирует только левые клики.

$('div.clickable-href').on('click', function(e) {
  switch(e.which) {
    case 1:
      window.location = $(this).attr('href');
      break;
    case 2:
      window.open($(this).attr('href'));
      break;
    case 3:
      break;
  }
});

Я использую <div href="url"> и <span href="url"> для ссылок, поэтому браузер не отображает строку состояния.

Я нашел несколько похожих вопросов, но все ответы предлагают использовать .on('mousedown', (e) => {...}). Мне нужно, чтобы это событие срабатывало, только если произошло событие mousedown, за которым следует событие mouseup.
Что еще более расстраивает то, что это работало, но это уже не так.


EDIT:
Это проблема для Chrome 55. В Linux (где я впервые заметил аномалию) Chrome уже был обновлен до версии v55. В моей системе Windows это было v54, и средний щелчок работал. Обновление с 54 до 55 вызвало те же проблемы.

Ответ 1

Я заметил проблему с кнопкой мыши # 3 в chrome (не тестировал ее в других браузерах).

Итак, вот исправление для него (добавьте contextmenu к событиям запуска):


ИЗМЕНИТЬ
Спасибо Матевуз Фабьянчичузе полезный комментарий.

Я подтверждаю, что с Chrome 55 (я обновил его минуту назад) средний клик мыши запускает новое событие auxclick.
Таким образом, событие click может быть вызвано только кнопкой мыши.

Обратите внимание, что auxclick запускается с помощью кнопок мыши 2 и 3.

Ссылка здесь.

$('div.clickable-href').on('click auxclick contextmenu', function(e) {
    e.preventDefault();
    console.log(e.which);
    console.log(e.type);
    
    if(e.type=="contextmenu"){
       console.log("Context menu prevented.");
       return;
    }
                           
    switch(e.which) {
        case 1:
            //window.location = $(this).attr('href');
            console.log("ONE");
            break;
        case 2:
            //window.open($(this).attr('href'));
            console.log("TWO");
            break;
        case 3:
            console.log("THREE");
            break;
    }
});
.clickable-href{
    width:20em;
    background-color:#DDD;
    text-align:center;
    padding:4em 0;
    border-radius:8px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="clickable-href">
  CLICK ME - Test all 3 mouse buttons!
</div>

Ответ 2

В Linux Chrome 55 для меня происходят следующие события:

Кнопка мыши 1: click
Кнопка мыши 2: contextmenu
Средняя кнопка мыши: auxclick