首先创建鼠标事件对象的方法createEvent()传入MouseEvents,返回的对象的方法initMouseEvent(),接收15个信息:
1.type(字符串):事件类型如“click”;
2.bubble(布尔值):是否冒泡;
3.cancelable(布尔值):是否可取消;
4.view(AbstractView):与事件关联的视图,一般为document.defaultView;
5.detail(整数):一般为0,一般只有事件处理程序使用;
6.screenX(整数):事件相对于屏幕的X坐标;
7.screenY(整数);
8.clientX(整数):事件相对于视口的X坐标;
9.clientY(整数);
10.ctrlKey(布尔值):是否按下了Ctrl键,默认为false;
- altKey(布尔值);
- shiftKey(布尔值);
- metaKey(布尔值);
- button(整数):表示按下了哪个鼠标键,默认为0;
- relatedTarget(对象):表示与事件相关的对象。一般只有在模拟mouseover与mouseout时使用。
最后记得把event对象传给dispatchEvent()方法。
如模拟按钮的单击事件:
//模拟click事件
//获取btn
var btn = document.querySelector("#btn");
//创建event
var event = document.createEvent("MouseEvents");
//初始化event
event.initMouseEvent("click",true,true,document.defaultView,0,0,0,0,0,false,false,false,false,0,null);
//click事件绑定事件处理程序
btn.onclick = function () {
console.log("hello");
}
//触发事件
btn.dispatchEvent(event); //hello
//取消引用
btn.onclick = null;
另外,建议使用构造函数"MouseEvent":
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
});