事件兼容问题
不同的浏览器获取事件源的方式是不同的,这源于浏览器在设计之初不同的浏览器对于事件的属性定义不同,下面让我们看一看不同浏览器对于多种同一事件的兼容问题。
1.事件处理
不同浏览器的事件源属性是不相同的为了解决这一问题,我们在书写方法时,会兼容性书写获取事件源的方法。
键盘事件
fuction keyDown(ev){
var e = ev || window.event;
var key = e.target || e.srcElement;
if(key==keyCode){
//......
}
}
鼠标事件
function mouse(ev){
var e =ev||window.event;
//获取事件源的坐标,
var key = e.target||e.srcElement
//或是鼠标的键
}
2.事件监听
在用事件监听方法給对象绑定事件时,由于不同浏览器的监听方法不同,会做一下处理
funtion addEvent(ele,type,cb){
return ele.attachEvent?ele.attachEvent("on"+type,cb):ele.addEventListener(type,cb);
}
給对象移除事件也存在兼容问题
function removeEvent(ele,type,cb){
return ele.detachEvent? ele.detachEvent(type,cb):ele.removeEvent("on"+type,cb);
}
3.事件冒泡
在html盒子里,触发里面的事件时会穿透到父级身上,这种现象叫事件冒泡,为了解决这一问题,要阻止事件冒泡
function stopBubble(e){
return window.stopPropagation ? e.stopPropagation():e.cancelBubble = true;
}
在IE浏览器里事件冒泡并不是方法,而是属性。
4.事件委托
obj.on+事件 = function(eve){
var e= eve || window.event;
var tar = e.target || e.srcElement;
//判断当前事件源,与其他对象是否满足条件
//绑定事件
}
浏览器中兼容问题有很多,因为浏览器的内核并不一样,厂家也不同,在编写这些浏览器时不同的设计师思维是不同的,编写的语言也不同。对于程序员来说,以较少的代码解决较多的问题,是我们程序员必需的基本素质
浙公网安备 33010602011771号