【问题标题】:how to simulate right click in javascript [duplicate]如何在javascript中模拟右键单击[重复]
【发布时间】:2013-06-14 00:34:01
【问题描述】:

好的,所以我知道我可以通过运行此代码来模拟点击

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

我能找到的最接近的是 cntextmenu 所以我尝试了

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

但是这没有任何作用

是否可以右键单击元素来调出上下文菜单,以便我可以单击该列表上的项目?如果是这样,有人能指出我实现这一目标的正确方向吗?

我已经进行了一些搜索,但我发现的唯一一件事是 jquery javascript 捕获事件并没有真正触发事件

【问题讨论】:

  • 我会说最好使用自定义菜单,这样您就可以更好地控制它。
  • 是自定义上下文菜单还是浏览器的?
  • 您无法打开默认的浏览器上下文菜单。你可以劫持它并自己制作。
  • 我不知何故找不到对我有用的重复问题现在我只需要弄清楚要单击哪个元素:)

标签: javascript right-click


【解决方案1】:

使用 jQuery

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

否则

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);

【讨论】:

    【解决方案2】:

    当然,您可以使用 jQuery trigger() 功能。

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

    根据您正在执行的操作,您可能希望触发鼠标向下然后鼠标向上,这可能是这样的:

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

    我不太喜欢链接这样的长命令,但是对于您的应用来说,最易读的内容都可以。

    【讨论】:

    • 非常好,对可行的解决方案投了反对票。做得好匿名小伙。
    • 为什么这个演示不起作用? jsbin.com/OjubeKU/1/edit
    • 是什么让你认为它不起作用,@andreaconsole?您没有任何日志可以向人类证明这一点,但计算机可能工作正常。你期望它做什么?另外,您可能应该创建一个新问题。
    • 你说得对,Jordan,我本以为会看到上下文菜单,但我发现这不会发生,即使我不明白为什么……
    • 这不起作用。可以去掉吗?
    猜你喜欢
    • 2012-11-06
    • 2010-09-30
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多