1. 程式人生 > >繫結事件的方法

繫結事件的方法

在JavaScript中,有三種常用的繫結事件的方法:

1.在標籤中直接繫結;
2.傳統繫結事件:
在JavaScript程式碼中繫結;//行為、樣式和結構相分離
3.現代事件繫結:
繫結事件監聽函式。

傳統事件繫結
只能繫結一個處理函式,相容性好

myDiv.事件名=function () {
	//獲取event物件,arguments[0]火狐瀏覽器的方法,window.event谷歌瀏覽器的方法
    // event物件:記錄事件發生時,頁面上的所有狀態
     var event=arguments[0] || window.event;
}

解除傳統事件繫結

myDiv.事件名=null;

現代事件繫結

可以繫結多個處理函式,執行速度快,可以進行事件冒泡和事件捕獲

//現代事件繫結的相容性設定
// 事件的處理函式不能帶小括號
if(document.attachEvent){
    myDiv.attachEvent("加on的事件型別",事件的處理函式);//ie現代事件繫結
}else{   
    // 布林值是控制事件階段的(true:事件冒泡     false:事件捕獲),預設用false
    myDiv.addEventListener("不加on的事件型別",事件的處理函式,布林值);//DOM瀏覽器現代事件繫結
}

解除現代事件繫結

myDiv.detachEvent("事件名",時間的處理函式);////ie現代事件取消繫結
myDiv.removeEventListener("事件名",事件處理函式,布林值);//DOM瀏覽器現代事件取消繫結*/

attachEvent()和addEventListener()的區別
相同點:都可以為元素繫結事件
不同點:
1.事件名不一樣
attachEvent():事件名有on
addEventListener():事件名無on
2.引數個數不一樣
attachEvent():兩個引數
addEventListener():三個引數
3.相容性不一樣
attachEvent():谷歌,火狐不支援,IE11不支援,IE8支援
addEventListener():谷歌,火狐,IE11支援,IE8不支援
4.this不同
attachEvent():this是window
addEventListener():this是當前繫結事件的物件

綜上所述,封裝一個相容所有瀏覽器的事件繫結方法

	if(element.addEventListener){
        element.addEventListener(type,fn,false);
    }else if(element.attachEvent){
        element.attachEvent("on"+type,fn);
    }else{
    	//不滿足現代事件繫結就使用傳統事件繫結的方法
        element["on"+type]=fn;
    }