Как заставить щелчок правой кнопкой мыши вести себя как щелчок левой кнопкой мыши с целью выделения или фокусировки объекта - PullRequest
2 голосов
/ 09 августа 2011

Событие, хотя щелчок правой кнопкой мыши (насколько я знаю) запускает событие mousedown, в большинстве случаев такое mousedown, кажется, игнорируется. В настоящее время я работаю над отображением пользовательского контекстного меню с помощью щелчка правой кнопкой мыши, но я также хотел бы иметь возможность выбрать опцию из списка, пока я щелкаю правой кнопкой мыши. На данный момент мой распознает щелчок по обеим кнопкам достаточно для запуска некоторого javascript, привязанного к атрибуту onmousedown, но недостаточно для выбора опции, когда мышь заканчивается, когда mousedown появляется от правой кнопки.

Есть ли способ обойти поведение браузера по умолчанию, игнорируя событие mousedown щелчка правой кнопкой мыши или вводя его в заблуждение, думая, что mousedown был создан левой кнопкой вместо этого?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Вы можете использовать событие oncontextmenu.

Редактировать: Чтобы смоделировать поведение щелчка по умолчанию для <option> во время щелчка правой кнопкой мыши, поместите этот код в обработчик событий при обработке щелчка правой кнопкой мыши:

clickedOption.parentNode.selectedIndex = clickedOption.index;
0 голосов
/ 09 августа 2011

Если вы хотите использовать jQuery , вы можете просто использовать mousedown:

$(document).bind('contextmenu', function(event) 
{
   // on right click
   if (event.which == 3)
   {
      // prevent right click from being interpreted by the browser:
      event.preventDefault(); 

      $(document).mousedown(); // simulate left click
   }
});

Конечно, вы можете использовать подходящий селектор. Это замечательно, поскольку в этом случае правый клик служит только левым кликом на определенных элементах вашего сайта. Таким образом, большую часть времени все еще можно использовать мышь, как и ожидалось (в зависимости от ваших селекторов).

РЕДАКТИРОВАТЬ: лучший пример

<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $("#rightclick").bind('contextmenu', function(event) {

         // on right click
         if (event.which == 3)
         {
            // prevent right click from being interpreted by the browser:
            event.preventDefault(); 
            $(this).click(); // simulate left click
         }
      });

      $('#rightclick').click(function() {
        $(this).html("i have been clicked!");
      });
    });
  </script>
</head>
<body>
  <p>This is a web page.</p>

  <div id="rightclick" style="width:200px; height:100px; background-color: orange">
    Click me with the right or left mouse button. Both will work!
  </div>
</body>
</html>
...