Как генерировать событие правой кнопкой мыши во всех браузерах

StackOverflow https://stackoverflow.com/questions/1579589

Вопрос

Небольшой контекст:
Приложение, над которым я работаю, имеет правое извлекло в контекстном меню для определенных объектов на экране. Текущий дизайн как каждый из этих объектов прослушивает, чтобы щелкнуть правой кнопкой мыши, отправляет запрос AJAX, чтобы получить контекстные данные для этого объекта, использует эти данные для создания PopuPmenU2 из Dojo 0.4.3 (я знаю!), А затем генерирует Щелкните правой кнопкой мыши, чтобы запустить меню Dojo.

Я пытаюсь выяснить способ создать правого щелчка события для всех браузеров. В настоящее время мы поддерживаем только IE и используем событие OnContextMenu.

Ограничения:

  • Нет jQuery :(
  • Я не могу предварительно загрузить все данные для объектов на экране, чтобы создать меню Dojo и избежать запроса AJAX.
Это было полезно?

Решение

Это должно заставить вас начать с создания события правого щелчка. Ключом к правой щелчке является параметр кнопки: кнопка = 2.

if (document.createEvent) {
  var rightClick = document.createEvent('MouseEvents');
  rightClick.initMouseEvent(
    'click', // type
    true,    // canBubble
    true,    // cancelable
    window,  // view - set to the window object
    1,       // detail - # of mouse clicks
    10,       // screenX - the page X coordinate
    10,       // screenY - the page Y coordinate
    10,       // clientX - the window X coordinate
    10,       // clientY - the window Y coordinate
    false,   // ctrlKey
    false,   // altKey
    false,   // shiftKey
    false,   // metaKey
    2,       // button - 1 = left, 2 = right
    null     // relatedTarget
  );
  document.dispatchEvent(rightClick);
} else if (document.createEventObject) { // for IE
  var rightClick = document.createEventObject();
  rightClick.type = 'click';
  rightClick.cancelBubble = true;
  rightClick.detail = 1;
  rightClick.screenX = 10;
  rightClick.screenY = 10;
  rightClick.clientX = 10;
  rightClick.clientY = 10;
  rightClick.ctrlKey = false;
  rightClick.altKey = false;
  rightClick.shiftKey = false;
  rightClick.metaKey = false;
  rightClick.button = 2;
  document.fireEvent('onclick', rightClick);
}

Я бы предложил Google для «document.createevent» и «document.createeventObject» для более подробной информации об API с сайтов Mozilla и MSDN.

Надеюсь это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top