Javascript Dom右键单击功能

时间:2017-01-24 03:15:03

标签: javascript dom simulate

这个问题在这里已经以一种简单的方式提出了问题:Trigger right click using pure JavaScript但是,没有一个答案是我(以及那个线程的海报)所寻求的。

首先,这个问题与事件无关。我不知道如何听取右键单击事件(这将是'contextemenu'事件)。这是关于模拟右键单击任何DOM元素,只需使用浏览器控制台(在我的情况下为chrome),然后使用JavaScript / DOM操作。

话虽如此,我知道有一个简单的功能可以做同样的事情,除了它触发任何元素的左(“正常”)点击。 例如,着名的......

I'm not a robot captcha

我发现如果你查看源代码,并以某种方式获得对checkbox元素的引用,或者包含它的“div”,让我们说你得到了ID,所以你创建了一个这样的变量。 ..

myElement = document.getElementById('Id_here');

只需在浏览器控制台中键入一个点击即可模拟点击:

myElement.click();

结果将是:

captcha solved!

因此,我们模拟了一个真正的点击,解决了验证码,没有需要鼠标,更重要的是,没有人需要(如果你在脚本上实现这个)

现在的问题非常简单......

有没有像我这样但右键点击?

myElement.rightClick(); myElement.contextClick();

声明

这仅用于研究和知识目的。 是的,我在许多网站上搜索过,但他们总是谈论这个事件,没有什么比我要求的更好。 如果有人能回答这个问题我会很感激,即使答案是“不,你不能”。但是,如果您要说明这一点,请100%确定它是不可能的或合理的。 一如既往,提前谢谢!

1 个答案:

答案 0 :(得分:1)

Yap easy:

var element = document.getElementById('Id_here');
if (window.CustomEvent) {
    element.dispatchEvent(new CustomEvent('contextmenu'));
} else if (document.createEvent) {
    var ev = document.createEvent('HTMLEvents');
    ev.initEvent('contextmenu', true, false);
    element.dispatchEvent(ev);
} else { // Internet Explorer
    element.fireEvent('oncontextmenu');
}