如何使用 JavaScript 模拟鼠标点击?
我知道 document.form.button.click()
方法。但是,我想知道如何模拟 onclick
事件。
我在 StackOverflow 上的某个地方找到了这段代码,但我不知道如何使用它:(
function contextMenuClick()
{
var element= 'button';
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('contextmenu', true, true, element.ownerDocument.defaultView,
1, 0, 0, 0, 0, false, false, false, false, 1, null);
element.dispatchEvent(evt);
}
如何使用 JavaScript 触发鼠标单击事件?
I know about the document.form.button.click()
method. However, I'd like to know how to simulate the onclick
event.
I found this code somewhere here on Stack Overflow, but I don't know how to use it :(
function contextMenuClick()
{
var element= 'button';
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('contextmenu', true, true, element.ownerDocument.defaultView,
1, 0, 0, 0, 0, false, false, false, false, 1, null);
element.dispatchEvent(evt);
}
How do I fire a mouse click event using JavaScript?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
(修改版本使其无需prototype.js即可工作)
请注意,您可以传入“选项”作为第三个参数。您未指定的选项取自defaultOptions(请参见脚本底部)。因此,如果您想要指定鼠标坐标,您可以执行以下操作:
您可以使用类似的方法来覆盖其他默认选项。
积分应转至 kangax。 这里是原始来源(特定于 prototype.js) 。
(Modified version to make it work without prototype.js)
Note that as a third parameter you can pass in 'options'. The options you don't specify are taken from the defaultOptions (see bottom of the script). So if you for example want to specify mouse coordinates you can do something like:
You can use a similar approach to override other default options.
Credits should go to kangax. Here's the original source (prototype.js specific).
模拟鼠标点击的一种更简单且更标准的方法是直接使用事件构造函数用于创建事件并分派它。
演示: http://jsfiddle.net/DerekL/932wyok6/
这适用于所有现代浏览器。对于包括 IE 在内的旧浏览器,
MouseEvent.initMouseEvent
不幸的是,尽管它已被弃用,但仍必须使用。An easier and more standard way to simulate a mouse click would be directly using the event constructor to create an event and dispatch it.
Demo: http://jsfiddle.net/DerekL/932wyok6/
This works on all modern browsers. For old browsers including IE,
MouseEvent.initMouseEvent
will have to be used unfortunately though it's deprecated.这是一个纯 JavaScript 函数,它将模拟目标元素上的单击(或任何鼠标事件):
这是一个工作示例: http://www.spookandpuff.com/examples/clickSimulation.html
您可以模拟 DOM。像
simulatedClick(document.getElementById('yourButtonId'))
这样的东西可以工作。您可以将对象传入
options
来覆盖默认值(以模拟您想要的鼠标按钮,无论是 Shift/Alt/按住 Ctrl 等。它接受的选项基于 MouseEvents API。我已经在 Firefox、Safari 和 Chrome 中进行了测试,可能需要特殊处理,我不确定。
Here's a pure JavaScript function which will simulate a click (or any mouse event) on a target element:
Here's a working example: http://www.spookandpuff.com/examples/clickSimulation.html
You can simulate a click on any element in the DOM. Something like
simulatedClick(document.getElementById('yourButtonId'))
would work.You can pass in an object into
options
to override the defaults (to simulate which mouse button you want, whether Shift/Alt/Ctrl are held, etc. The options it accepts are based on the MouseEvents API.I've tested in Firefox, Safari and Chrome. Internet Explorer might need special treatment, I'm not sure.
根据德里克的回答,我验证了
即使使用键修饰符也能按预期工作。据我所知,这并不是一个已弃用的 API。您也可以在此页面上进行验证。
Based on Derek's answer, I verified that
works as expected even with key modifiers. And this is not a deprecated API, as far as I can see. You can verify on this page as well.
来自 Mozilla 开发者网络 (MDN) 文档,HTMLElement。 click() 就是您要寻找的。您可以在此处了解更多活动。
From the Mozilla Developer Network (MDN) documentation, HTMLElement.click() is what you're looking for. You can find out more events here.
您可以使用 elementFromPoint:
所有浏览器都支持:< a href="https://caniuse.com/#feat=element-from-point" rel="noreferrer">https://caniuse.com/#feat=element-from-point
You can use elementFromPoint:
supported in all browsers: https://caniuse.com/#feat=element-from-point
不要依赖已弃用的 API 功能。所有浏览器都支持下面的示例。 在此处查看文档和示例
Don't rely on deprecated API features. All browsers support the example below. See docs and example here
在复杂的下拉菜单中“其他一切都失败”的情况下,这对我有用,希望它对其他人有帮助:
用法:
This worked for me in a situation where "everything else failed" in a complex dropdown menu , hope it helps someone else:
usage:
JavaScript 代码
HTML 代码
JavaScript Code
HTML Code