首先創(chuàng)建鼠標(biāo)事件對(duì)象的方法createEvent()傳入MouseEvents丸相,返回的對(duì)象的方法initMouseEvent()漠趁,接收15個(gè)信息:
1.type(字符串):事件類型如“click”痕貌;
2.bubble(布爾值):是否冒泡勤哗;
3.cancelable(布爾值):是否可取消昆码;
4.view(AbstractView):與事件關(guān)聯(lián)的視圖,一般為document.defaultView;
5.detail(整數(shù)):一般為0,一般只有事件處理程序使用闰靴;
6.screenX(整數(shù)):事件相對(duì)于屏幕的X坐標(biāo);
7.screenY(整數(shù))钻注;
8.clientX(整數(shù)):事件相對(duì)于視口的X坐標(biāo)蚂且;
9.clientY(整數(shù));
10.ctrlKey(布爾值):是否按下了Ctrl鍵幅恋,默認(rèn)為false杏死;
- altKey(布爾值);
- shiftKey(布爾值)捆交;
- metaKey(布爾值)淑翼;
- button(整數(shù)):表示按下了哪個(gè)鼠標(biāo)鍵,默認(rèn)為0品追;
- relatedTarget(對(duì)象):表示與事件相關(guān)的對(duì)象玄括。一般只有在模擬mouseover與mouseout時(shí)使用。
最后記得把event對(duì)象傳給dispatchEvent()方法肉瓦。
如模擬按鈕的單擊事件:
//模擬click事件
//獲取btn
var btn = document.querySelector("#btn");
//創(chuàng)建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");
}
//觸發(fā)事件
btn.dispatchEvent(event); //hello
//取消引用
btn.onclick = null;
另外遭京,建議使用構(gòu)造函數(shù)"MouseEvent":
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
});