模拟鼠标事件

首先创建鼠标事件对象的方法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;

  1. altKey(布尔值);
  2. shiftKey(布尔值);
  3. metaKey(布尔值);
  4. button(整数):表示按下了哪个鼠标键,默认为0;
  5. 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
});

你可能感兴趣的:(模拟鼠标事件)