首页 > IT职业 > IT生活 > DOM事件学习手记 DOM事件处理
2 事件处理程序
2.1 html事件写法:
直接把事件写在html代码中,后期修改麻烦。
缺点:HTML和js代码高耦合,如果修改,就要修改两个地方--HTML元素内和script函数。
例子:
2.3 DOM2级事件处理程序
DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:
addEventListener()和removeEventListener()
【接收三个参数】:要处理的事件名、作为事件处理程序的函数和布尔值。
其中,true表示在捕获阶段调用事件处理程序,false表示在冒泡阶段调用事件处理程序。一般设置为false,即添加到冒泡阶段,能兼容更多的浏览器。
例子:
document.getElementById("myTest").detachEvent("onclick", function(){alert(1)}); // 删除事件
2.5 跨浏览器事件处理
将添加事件addHandle与删除事件removeHandle两个方法封装在eventUtil中。
addHandle:function(element,type,handler)
第一个参数是给谁添加,第二个参数是添加什么,第三个参数是触发了什么操作。
例子:
var eventutil = {
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;
}
}, //该处有一个逗号!
removeHandler:function (element,type,handler) {
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent('on'+type,hander);
}else{
element['on'+type]=null;
}
}
}
eventutil.addHandler(btn3,"click",showMessage);
// btn3为获取的对象,showMessage为定义的函数
3.2 IE Event对象常用属性
type:
兼容DOM的type属性
srcElement:
兼容DOM的target属性
clientX, clientY:
兼容DOM的clientX, clientY属性
cancelBubble:
布尔值,设为true同调用stopPropagation()
returnValue:
布尔值,设为false同调用preventDefault()
例子:一个封装好的事件函数,
调用方法。//eventUtil.addHandler(element,type,handler) element为元素对象,type为click等事件,handler为触发的函数。
var eventUtil = {
addHandler:function (element,type,handler) {
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent('on'+type,hander);
}else{
element['on'+type]=hander;
}
}, //该处有一个逗号!
removeHandler:function (element,type,handler) {
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent('on'+type,hander);
}else{
element['on'+type]=null;
}
},
getElement:function (event) {
return event.target || event.srcElement;
},
getEvent:function (event) {
return event?event:window.event;
},
preventDefault:function (event) {
if(event.preventDefault){
event.preventDefault()
}else{
event.returnValue = false;
}
},
stopPropagation:function (event) {
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble = true;
}
},
preventEvent:function (event) {
if(event.preventDefault){
enent.preventDefault()
}else{
eventReturnValue=false;
}
},
stopPropagation:function (enent) {
if(event.stopPropagation) {
event.stopPropagation()
}else{
enent.cancelBubble=true;
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3104/viewspace-2807423/ ,如需转载,请注明出处,否则将追究法律责任。