JavaScript 跨浏览器单击 HTML DOM 元素
是否有可用的普通 JavaScript 跨浏览器函数能够触发 HTML DOM 元素(包括 div 等非表单元素)上的单击事件?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
是否有可用的普通 JavaScript 跨浏览器函数能够触发 HTML DOM 元素(包括 div 等非表单元素)上的单击事件?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
大多数走这条路的人要么最终开发自己的事件管理系统(这并不难,但很烦人),要么在可用的功能范围内工作。
如果所有浏览器都支持单一模型(例如 W3C 事件模型),那么生活将会很甜蜜。但他们没有。不仅如此,一些浏览器拒绝以与“真实”事件相同的方式响应编程事件。例如,在 Firefox 中的链接上使用 displatchEvent 调度点击事件不会导致浏览器跟踪该链接(但如果有的话,会触发 onclick 侦听器)。大多数其他浏览器都会点击该链接。
IE 版本 8 之前不支持dispatchEvent(也许 9 支持),它有 fireEvent 相似但不同。
HTML5(还不是标准,也许永远不会成为标准)为 点击方法。 html#htmlelement" rel="noreferrer">HTMLElement 接口,但尚未完全实现,不能依赖。它很可能用于您知道或可以控制将使用该页面的浏览器版本的环境。
如果侦听器已分配给属性或内联,您也可以只调用元素的 onclick 属性,但这当然不像真正的事件。
关于dispatchEvent的有用帖子在 clj 上。
Most who go down this path either end up developing their own event managment system (which isn't that hard but is annoying) or work within the available capabilities.
If all browsers supported a single model, (say the W3C event model), life would be sweet. But they don't. And not only that, some browsers refuse to respond to programmatic events the same way as "real" events. e.g. dispatching a click event using displatchEvent on a link in Firefox will not cause the browser to follow the link (but will trigger the onclick listener if there is one). Most other browsers will follow the link.
IE didn't support dispatchEvent up to version 8 (perhaps 9 does), it has fireEvent which is similar but different.
HTML5 (which is not a standard yet, maybe it never will be) has introduced a click method for the HTMLElement interface, however it's not fully implemented yet and can't be relied upon. It can likely be used for environments where you know or can control the browser versions that will be using the page.
You can also just call the element's onclick property if a listener has been assigned to the property or inline, but of course that's not like a real event.
Useful post on dispatchEvent on clj.
在 Mozilla 文档中发现了这个难以捉摸的函数: https://developer.mozilla.org/En/DOM/Document.createEvent< /a>,这里也是:http://javascript.gakaa.com/document-createevent-4-0-5-.aspx< /a>
Found this elusive function on Mozilla documentation: https://developer.mozilla.org/En/DOM/Document.createEvent, and here too: http://javascript.gakaa.com/document-createevent-4-0-5-.aspx
摘自MDC event.initMouseEvent 参考和这个问题。
jsFiddle 您可以在不同的浏览器上进行测试。
Taken from the MDC event.initMouseEvent reference and this SO question.
jsFiddle that you can test on different browsers.
给定:
以下内容将调用 hello world 提示符:
Given:
The following would invoke the hello world prompt: