大家都知道,现代事件绑定(attachevent)在伊江有很多问题与W3C标准(addEventListener)。
例如:当重复添加事件并触发闪回
执行时,
内存泄漏。
下面是
处理绑定事件绑定的传统事件的
方法:
addevent.id = 1; / /事件计数器
函数AddEvent(obj,
类型,FN){
如果(obj。addEventListener){
Obj.addEventListener(型、FN、假);
{其他}
判断对象是否存在,只有一个对象或每次
创建一个事件对象。
/ /存储数组类型和
功能键/值的形式,=======事件对象数组对象
安装到
目标 方便事件
删除 如果(!对象事件){
等效结构obj.events / FN2 },mouserover:{ FN1 },{点击:{ FN1,…}
obj.events = { };
}
var标志= false;
存储/事件对象
如果(!对象事件{型}){
类型数据存储功能一个接一个
对象事件{类型} = { };
第一个事件在第一个类型数组中存储的类型类型和函数
对象事件{类型} { 0 } = FN;
{人}
var eventfn = obj。事件{类型};
这种类型的对象通过循环
查询,是否重复事件,重复标志true,返回返回。
对于(VAR我eventfn){
如果(eventfn {我} = = FN){
标志=真;
返回;
}
}
要确定事件是否重复,重复的话将不会是事件的存储功能,或事件和执行的存储。
如果(!旗){
当类型已经存在时,事件类型存储函数的总时间,最后一个周期执行
eventfn { AddEvent。ID + } = FN;
}
}
事件功能类型数组遍历调用
obj { +型} =函数(){
风险事件= window.event; / /事件对象存储
在调用时,添加事件对象中的函数,并防止与W3C标准
同步的
默认行为。
event.preventdefault =函数(){
this.returnvalue = false;
};
在尾函数后面添加事件对象中的函数,停止气泡。
event.stoppropagation =函数(){
this.cancelbubble =真;
};
多功能循环直通式存储
无功evfn = obj。事件{类型};
对于(VAR我evfn){
事件/
命令执行功能的类型,
解决传统触发事件的覆盖问题和现代事件绑定反转。
事件的问题
我evfn { }。电话(这事件); / /执行功能将被放置在对象的执行环境,并通过一个事件
图像用于函数回调。
}
}
}
}
功能removeevent(obj,类型,FN){
如果(obj。removeEventListener){
Obj.removeEventListener(型、FN、假);
{人}
循环遍历对象下的事件类型是否函数的函数,如果事件将删除函数
无功evefn = obj。事件{类型};
对于(VAR我evefn){
如果(evefn {我} = = FN){
evefn {我} / /删除;该方法还可以删除该项的数组,但会保留
位置的值时的访问时间
未定义的
Evefn.splice(I,1); / /删除1的位置,我,
}
}
}
}
以上是本文的全部内容,希望大家能喜欢。