javascript事件在IE和DOM瀏覽器的差異總結

來源:互聯網
上載者:User

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  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.