是否可以通过JavaScript触发链接(或任何元素)的点击事件?

Dan*_*ert 46 javascript

我正在编写一些需要click为链接触发事件的JavaScript代码.在Internet Explorer中,我可以这样做

var button = document.getElementById('myButton');
button.click();
Run Code Online (Sandbox Code Playgroud)

但这在Firefox中不起作用,我假设任何其他浏览器.在Firefox中,我做到了这一点

var button = document.getElementById('myButton');
window.location = button.href;
Run Code Online (Sandbox Code Playgroud)

我觉得这不是最好的方法.有没有更好的方法来触发click事件?优选地,无论元素类型或浏览器如何都可以工作.

Chr*_*ald 73

http://jehiah.cz/archive/firing-javascript-events-properly

function fireEvent(element,event) {
   if (document.createEvent) {
       // dispatch for firefox + others
       var evt = document.createEvent("HTMLEvents");
       evt.initEvent(event, true, true ); // event type,bubbling,cancelable
       return !element.dispatchEvent(evt);
   } else {
       // dispatch for IE
       var evt = document.createEventObject();
       return element.fireEvent('on'+event,evt)
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么否定`element.dispatchEvent()`的返回值?两个[`element.dispatchEvent`](https://developer.mozilla.org/en/DOM/element.dispatchEvent)和[`element.fireEvent`](http://msdn.microsoft.com/en-us/ library/ms536423%28VS.85%29.aspx)如果事件被取消则返回false,否则返回true. (6认同)
  • 根据经验,通常最好首先检查标准功能(例如`createEvent`),然后再检查专有功能(例如`createEventObject`). (4认同)

Vin*_*vic 1

这通常是不可能的,据我所知,mozilla 有click()方法,但仅适用于输入元素,不适用于链接。

为什么不创建一个按钮将在 onClick 处理程序上调用的函数,并且每当您想“单击”按钮时调用该函数呢?