数码资讯
事件处理示例共享
少说话,直接给出示例代码。 复制代码代码如下所示: 功能eventutil(){ 无功_self =这; 只需添加事件 VaR AddEvent =(函数(){() 如果(文件。addEventListener){ 返回函数(EL,类型,FN){ El.addEventListener(型、FN、假
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
少说话,直接给出示例代码。
复制代码代码如下所示:
功能eventutil(){
无功_self =这;
只需添加事件
VaR AddEvent =(函数(){()
如果(文件。addEventListener){
返回函数(EL,类型,FN){
El.addEventListener(型、FN、假);
}
{人}
返回函数(EL,类型,FN){
el.attachevent(+类型,函数(){
返回fn.call(厄尔尼诺事件窗口。);
});
}
}
});
只需添加属性更改事件
无功addpropertychangeevent =功能(obj,FN){
如果(窗口。ActiveX对象){
obj.onpropertychange = FN;
{人}
Obj.addEventListener(输入
}
}
删除事件
无功removeevent =功能(obj,类型,FN){
如果(obj。removeEventListener){
Obj.removeEventListener(型、FN、假);
else if(obj。detachevent){ }
obj.detachevent(+型,obj { +类型+ FN });
obj { +类型+ FN } = null;
}
}
加载事件
无功loadevent =功能(Fn){
VaR在window.onload oldonload =;
如果(typeof oldonload!=函数{){
在window.onload = FN;
{人}
在window.onload =函数(){
Oldonload();
(FN);
}
}
}
停止/事件
无功stopevent =功能(e){
E = e window.event | |;
如果(e.preventDefault){
E.preventDefault();
e.stoppropagation();
{人}
e.returnvalue = false;
e.cancelbubble =真;
}
}
如果只有停止事件
VaR里面=功能(e){
E = e window.event | |;
如果(!{){
e.cancelbubble =真;
{人}
e.stoppropagation();
}
}
获取事件源对象
无功getevent1 =功能(e){
E = e window.event | |;
var obj = e.srcelement e.srcelement:e.target;
返回对象;
}
获取事件源对象
无功getevent2 =功能(e){
如果(窗口。事件)返回window.event;
var c = getevent2.caller;
而(c.caller){
C = c.caller;
}
返回c.arguments { 0 };
}
或更强大的
无功getevent3 =功能(e){
VaR E = e window.event | |;
如果(!e){
var c = this.getevent3.caller;
当(c){
E = c.arguments { 0 };
如果(E(事件= = e.constructor | | { MouseEvent = = e.constructor))
打破;
}
C = c.caller;
}
}
VaR目标= e.srcelement e.srcelement:e.target,
currentn = target.nodename.tolowercase(),
parentn = target.parentnode.nodename.tolowercase(),
grandn = target.parentnode.parentnode.nodename.tolowercase();
返回{ E、目标、currentn,parentn,grandn };
}
_self.addevent = AddEvent;
_self.addpropertychangeevent = addpropertychangeevent;
_self.removeevent = removeevent;
_self.loadevent = loadevent;
_self.stopevent = stopevent;
_self.stoppropagation =里面;
_self.getevent1 = getevent1;
_self.getevent2 = getevent2;
_self.getevent3 = getevent3;
}
无功eventutil =新eventutil();
eventutil.loadevent(函数(){()
eventutil.addevent(文档,点击
警报(eventutil.getevent3(E));
});
eventutil.addpropertychangeevent(文档,功能(e){
警报(eventutil.getevent3(E));
});
});
Javascript事件处理分为三个阶段:捕获-处理-起泡。
以单击按钮为例:
捕获阶段:从外层到内层,首先调用窗口注册点击捕获阶段监控方法,然后将文档、主体、一层父节点,直到按钮本身。
处理阶段:调用按钮本身的单击监视方法。
起泡阶段:从按钮开始,从内层到外层,依次调用各级父节点的起泡阶段监控方法,直到窗口为止。
然而,IE8和IE低版本,捕获阶段是不支持的,所以事件的捕获阶段的监控是不常见的。
通常的事件处理方法如下:
复制代码代码如下所示:
功能EventHandler(e){
E = e window.event | |;
VaR目标= e.target e.srcelement | |;
…
}
e是事件对象。当事件被触发时,它是作为一个参数传递,但它不适合IE8和低版本的IE浏览器只能通过全球性的事件变量的访问,但它是很好的,不会有同时处理两事件。
复制代码代码如下所示:
功能eventutil(){
无功_self =这;
只需添加事件
VaR AddEvent =(函数(){()
如果(文件。addEventListener){
返回函数(EL,类型,FN){
El.addEventListener(型、FN、假);
}
{人}
返回函数(EL,类型,FN){
el.attachevent(+类型,函数(){
返回fn.call(厄尔尼诺事件窗口。);
});
}
}
});
只需添加属性更改事件
无功addpropertychangeevent =功能(obj,FN){
如果(窗口。ActiveX对象){
obj.onpropertychange = FN;
{人}
Obj.addEventListener(输入
}
}
删除事件
无功removeevent =功能(obj,类型,FN){
如果(obj。removeEventListener){
Obj.removeEventListener(型、FN、假);
else if(obj。detachevent){ }
obj.detachevent(+型,obj { +类型+ FN });
obj { +类型+ FN } = null;
}
}
加载事件
无功loadevent =功能(Fn){
VaR在window.onload oldonload =;
如果(typeof oldonload!=函数{){
在window.onload = FN;
{人}
在window.onload =函数(){
Oldonload();
(FN);
}
}
}
停止/事件
无功stopevent =功能(e){
E = e window.event | |;
如果(e.preventDefault){
E.preventDefault();
e.stoppropagation();
{人}
e.returnvalue = false;
e.cancelbubble =真;
}
}
如果只有停止事件
VaR里面=功能(e){
E = e window.event | |;
如果(!{){
e.cancelbubble =真;
{人}
e.stoppropagation();
}
}
获取事件源对象
无功getevent1 =功能(e){
E = e window.event | |;
var obj = e.srcelement e.srcelement:e.target;
返回对象;
}
获取事件源对象
无功getevent2 =功能(e){
如果(窗口。事件)返回window.event;
var c = getevent2.caller;
而(c.caller){
C = c.caller;
}
返回c.arguments { 0 };
}
或更强大的
无功getevent3 =功能(e){
VaR E = e window.event | |;
如果(!e){
var c = this.getevent3.caller;
当(c){
E = c.arguments { 0 };
如果(E(事件= = e.constructor | | { MouseEvent = = e.constructor))
打破;
}
C = c.caller;
}
}
VaR目标= e.srcelement e.srcelement:e.target,
currentn = target.nodename.tolowercase(),
parentn = target.parentnode.nodename.tolowercase(),
grandn = target.parentnode.parentnode.nodename.tolowercase();
返回{ E、目标、currentn,parentn,grandn };
}
_self.addevent = AddEvent;
_self.addpropertychangeevent = addpropertychangeevent;
_self.removeevent = removeevent;
_self.loadevent = loadevent;
_self.stopevent = stopevent;
_self.stoppropagation =里面;
_self.getevent1 = getevent1;
_self.getevent2 = getevent2;
_self.getevent3 = getevent3;
}
无功eventutil =新eventutil();
eventutil.loadevent(函数(){()
eventutil.addevent(文档,点击
警报(eventutil.getevent3(E));
});
eventutil.addpropertychangeevent(文档,功能(e){
警报(eventutil.getevent3(E));
});
});
Javascript事件处理分为三个阶段:捕获-处理-起泡。
以单击按钮为例:
捕获阶段:从外层到内层,首先调用窗口注册点击捕获阶段监控方法,然后将文档、主体、一层父节点,直到按钮本身。
处理阶段:调用按钮本身的单击监视方法。
起泡阶段:从按钮开始,从内层到外层,依次调用各级父节点的起泡阶段监控方法,直到窗口为止。
然而,IE8和IE低版本,捕获阶段是不支持的,所以事件的捕获阶段的监控是不常见的。
通常的事件处理方法如下:
复制代码代码如下所示:
功能EventHandler(e){
E = e window.event | |;
VaR目标= e.target e.srcelement | |;
…
}
e是事件对象。当事件被触发时,它是作为一个参数传递,但它不适合IE8和低版本的IE浏览器只能通过全球性的事件变量的访问,但它是很好的,不会有同时处理两事件。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。