3

Un petit contexte:
L'application sur laquelle je travaille comporte un menu contextuel contextuel pour certains objets à l'écran. La conception actuelle que chacun de ces objets écoute pour un clic droit, envoie une requête AJAX pour obtenir les données de contexte pour cet objet, utilise ces données pour créer un PopupMenu2 à partir de Dojo 0.4.3 (je sais!), Puis génère un clic droit pour lancer le menu Dojo.Comment générer un événement clic-droit dans tous les navigateurs

J'essaie de trouver un moyen de générer un événement clic droit pour tous les navigateurs. Actuellement, nous ne prenons en charge que IE et utilisons l'événement oncontextmenu.

Restrictions:

  • Pas jQuery :(
  • Je ne peux pas pré-charge toutes les données pour les objets à l'écran pour créer le menu Dojo et éviter la demande AJAX
+2

http://www.harelmalka.com/rightcontext/ – powtac

+1

+1 pour lancer une question sur les événements de clic droit avec "Un petit contexte". – Troubadour

+0

Je suis content que quelqu'un a attrapé ça! – ntownsend

Répondre

4
.

Cela devrait vous aider à générer un clic droit: la touche du clic droit est le paramètre du bouton: button = 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); 
} 

Je suggère Googleing pour 'document.createEvent' et 'document.createEventObject' pour plus de détails sur l'API à partir des sites Mozilla et MSDN.

Espérons que cela aide!

+0

Cela devrait-il faire apparaître le menu contextuel du navigateur natif à 10,10? Ce n'est pas pour moi! – EoghanM

+1

ne fonctionne pas pour le chrome. –

Questions connexes