9

Ok, so i know i can simulate a click by running this code

document.getElementById('recover').click();

the closest this i could find was cntextmenu so i tried

document.getElementById('recover').contextmenu();

however this does nothing

Is it possible to right click and element to bring up the contextual menu so i can click an item on that list ? and if so could someone point me in the correct direction to accomplish such a goal ?

I've done some searching but the only thing i have found is jquery javascript capturing of the event not actually triggering the event

mcgrailm
  • 17,469
  • 22
  • 83
  • 129
  • I'd say it's better to use a custom menu so you can have a much better control over it. – Claudio Redi Jun 13 '13 at 16:32
  • Is it a custom context menu or the browser's? – epascarello Jun 13 '13 at 16:33
  • You can't open the default browser context menu. You can hijack that and make your own though. – Rich Bradshaw Jun 13 '13 at 16:35
  • the duplicate question that i somehow failed to find works for for me now i just have to figure out which element to click :) – mcgrailm Jun 13 '13 at 16:46
  • This answer was good for me, but I wanted to simulate a click at the current mouse position. So where the code says 0,0,0,0, I replaced the last two 0's with the current mouse x/y position relative to the screen. – John Gilmer Aug 11 '23 at 19:33

2 Answers2

12

with jQuery

$('#recover').trigger({
    type: 'mousedown',
    which: 3
});

otherwise

var element = document.getElementById('recover');
var e = element.ownerDocument.createEvent('MouseEvents');

e.initMouseEvent('contextmenu', true, true,
     element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
     false, false, false,2, null);


return !element.dispatchEvent(e);
Ben McCormick
  • 25,260
  • 12
  • 52
  • 71
3

Sure, you can use the jQuery trigger() functionality.

$('#recover').trigger({
    type: 'mousedown',
    which: 3
});

Depending on what you're doing, you may wish to trigger a mouse down and then a mouse up, which could go like this:

$('#recover').trigger({
    type: 'mousedown',
    which: 3
}).trigger({
    type: 'mouseup',
    which: 3
});

I'm not a big fan of chaining long commands like that, but whatever is most readable for your app is fine.

Jordan
  • 31,971
  • 6
  • 56
  • 67