mouseEvent.initMouseEvent没有足够的参数

时间:2014-11-05 16:02:41

标签: javascript

以下JS代码适用于Safari:

var a = $('.shell a')[0];
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window);
a.dispatchEvent(evObj);

然而,这一行

evObj.initMouseEvent('click', true, true, window);

在Firefox中给出了以下错误:

TypeError: Not enough arguments to MouseEvent.initMouseEvent.

我应该使用什么来实现多浏览器兼容性?

1 个答案:

答案 0 :(得分:3)

正如您在MDN's initEvent page上看到的那样,不推荐使用此类事件。 “改为使用事件构造函数”:

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

在你的情况下:

var evObj = new Event('click');
a.dispatchEvent(evObj);

click事件要简单得多! Native DOM对所有元素都有click()方法,因此您可以这样做:

a.click();

就是这样。

如果您想触发自定义事件或事件,例如mouseover,您仍然可以使用(新)事件派发系统:new Event('mouseover')