mouseEvent.initMouseEvent的参数不足

not enough arguments to mouseEvent.initMouseEvent

本文关键字:参数 initMouseEvent mouseEvent      更新时间:2023-09-26

以下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.

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

正如您在MDN的initEvent页面上看到的那样,不赞成使用这样的事件。"改用事件构造函数":

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

在您的情况下:

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

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

a.click();

就是这样。

如果您想触发自定义事件或类似mouseover的事件,您仍然可以使用(新的)事件调度系统:new Event('mouseover') etc