今天上網看了許多關於js的dom事件的內容。其中呢,對於跨瀏覽器實現的事件處理程序的封裝方法很感興趣。主要呢就是對於ie和其他主流的瀏覽器的差別。
var eventUtil = {
//添加dom事件處理程序
//添加的屬性
addHandler:function(element,type,handler){
if (element.addEventListener) {
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent('on'+type,handler);
}else{
element['on'+type]=handler;
}
},
//刪除dom事件處理程序
removeHandler:function(element,type,handler){
if(element.removerEventListener){
element.removerEventListener(type,handler,false);
}else if (element.detachEvent) {
element.detachEvent('on'+type,handler);
}else{
element['on'+type]=null;
}
}
}
關於其中的element['on'+type]是因爲element.後無法與字符串連接。而element[]等價於element.
關於是否加on,是因爲ie的事件處理程序與別的瀏覽器不同導致。事件的type有的是dom2級中是click而由於ie8之前不兼容dom2級事件處理,則需要用type爲onclick的ie時間處理程序。