js中傳統事件繫結模擬現代事件處理

2022-07-24 17:09:20 字數 858 閱讀 6610

大家都知道,ie中的現代事件繫結(attachevent)與w3c標準的(addeventlistener)相比存在很多問題,

例如:記憶體洩漏,重複新增事件並觸發的時候是倒敘執行等。

下面是用傳統事件的方法來處理封裝事件的繫結:

新增事件繫結事件:

addevent.id = 1;        //

事件計數器

function

addevent(obj, type, fn)

else

obj.events ={};

}var flag = false

;

//儲存事件物件

if( !obj.events[type])

else

}//判斷該事件是否重複,重複的話就不進行事件的函式的儲存,否則儲存該事件並執行

if( !flag )

}//事件函式 型別陣列 函式遍歷呼叫

obj["on"+type] = function

();

//在事件物件後面新增函式,乙個尾巴函式,停止冒泡。

event.stoppropagation = function

();

//迴圈遍歷執行型別儲存的多個函式

var evfn =obj.events[type];

for(var i in

evfn)}}

}

移除事件繫結:

function

removeevent(obj, type, fn)

else}}

}

JS事件流,事件繫結

事件流,事件繫結 主流browser,符合w3c標準,支援冒泡和捕獲 低版本ie,僅支援冒泡 冒泡到window document 事件繫結 解綁 elem.addeventlistener evt,func,usecapture elem.removeeventlistener evt,func ...

js事件繫結

事件繫結,常見的是odiv.nclick function 這種方式繫結事件太單一,如果繫結多個,那麼最後乙個事件會覆蓋掉之前的,也就是說只執行最後一次繫結的事件,這裡要說的是addeventlistener方法,和ie下的attachevent方法 html 如下 box son1 son2 介面...

js 事件繫結

事件繫結的方式 1.dom 元素行內繫結 div onclick alert 1 div 2.js on eventtype document.onclick function 3.addeventlistener document.getelementbyid mybtn addeventlist...