首先創建鼠標事件對象的方法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
});