Pregunta

Un pequeño contexto:
La aplicación en la que estoy trabajando tiene un menú contextual de clic derecho para ciertos objetos en la pantalla. El diseño actual, ya que cada uno de estos objetos escucha un clic derecho, envía una solicitud AJAX para obtener los datos de contexto para ese objeto, usa esos datos para crear un PopUpMenu2 desde Dojo 0.4.3 (¡lo sé!), Y luego genera Un clic derecho para iniciar el menú Dojo.

Estoy tratando de encontrar una manera de generar un evento de clic derecho para todos los navegadores. Actualmente, solo admitemos IE y usamos el evento OnContextMenu.

Restricciones:

  • No jQuery :(
  • No puedo precargar todos los datos de los objetos en la pantalla para crear el menú Dojo y evitar la solicitud AJAX.
¿Fue útil?

Solución

Esto debería hacer que comience con la generación de un evento de clic derecho. La clave para el clic derecho es el parámetro del botón: botón = 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);
}

Sugeriría Googleing para 'Document.CreateEvent' y 'Document.CreateEteventObject' para obtener más detalles sobre la API de los sitios Mozilla y MSDN.

¡Espero que esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top