1、事件處理函數
在IE中:
每個元素和windows對象都有兩個方法:attachEvent()和detachEvent(),看名字就知道第一個是添加事件處理函數,第二個是移除。
1 [object].attachEvent("name_of_event_handler","function_to_attach")
2 [object].detachEvent("name_of_event_handler","function_to_remove")
這種方法可以添加多個事件處理函數
在DOM瀏覽器中:
addEventListener()和removeEventListener()來分配和移除事件處理函數。他有三個參數:事件名稱、要分配的函數、處理函數是用於冒泡階段還是捕獲階段(捕獲階段為true)。
1 [object].addEventListener("name_of_event",fnhander,bcapture)
2 [object].removeEventListener("name_of_event",fnhander,bcapture)
同樣也可以添加多個事件處理函數
2、事件對象的定位
在IE中:
事件對象是windows對象的一個屬性event,事件處理函數必須這樣訪問事件對象:
1 oDiv.onclick = function(){
2 var var oEvent = window.event;
3
4 }
在DOM中:
而在DOM標準中event對象必須作為唯一的參數傳遞給事件處理函數,所以要這麼做:
1 oDiv.onclick = function(){
2 var oEvent = argunments[0]
3 }
或者
1 oDiv.onclick = function(oEvent){
2
3 }
所以要用不同的方法來擷取event對象
所以我們經常見到這種寫法
1 e = event || window.event
邏輯或操作符作用於兩個對象時第一個對象非空,返回第一個對象,否則返回第二個對象。
還有在arguments屬性,在event對象中總是事件處理函數的第一個參數,也就是說可以訪問事件處理函數的agreements[0]來擷取event對象
3、擷取目標
在IE中:
IE目標包含在event對象的srcElement屬性中:
1 var oTarget = oEvent.srcElement;
在DOM中:
目標包含在target屬性中:
1 var oTarget = oEvent.target;
IE目標只能是元素、文檔或者視窗;DOM相容的瀏覽器也允許把文本節點作為目標
4、擷取字元代碼
IE和DOM都支援event對象的keyCode屬性,他會返回按下按鍵的數值代碼
在IE中:
1 var oCharCode = oEvent .keyCode;
在DOM中:
1 var oCharCode = oEvent .charCode;
5、阻止預設行為
在IE中:
1 oEvent.returnValue = false;
在DOM中:
1 oEvent.preventDefault();
6、停止冒泡
在IE中:
1 oEvent.cancelBubble = true;
在DOM中:
1 oEvent.stopPropagation();
7、擷取事件來源
在IE中:
1 oEvent.target
在DOM中:
1 oEvent.srcElement