JavaScript封装一个注册函数解决兼容问题
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript封装一个注册函数解决兼容问题相关的知识,希望对你有一定的参考价值。
我们知道javascript注册(绑定)事件主要有两类方式,第一类传统方式具有注册事件的唯一性,即对于同一元素的同一事件,不会出现两个处理函数,如下
var btn = document.querySelector('button');
btn.onclick = function(){
document.body.style.backgroundColor = "yellow";
}
第二类没有唯一性限制,具体有两种做法,其中addEventListener方法需要ie9以上浏览器支持,例如
function handle(){
document.body.style.backgroundColor = "yellow";
}
btn.addEventListener('click',handle);
另一种attachEvent需要ie9以前的浏览器支持,例如
function handle(){
document.body.style.backgroundColor = "yellow";
}
btn.attachEvent('onclick',handle);
兼容性处理原则是:首先照顾大多数浏览器,再处理特殊浏览器
然后又不希望被注册事件的唯一性限制住
因此,优先级是addEventListener>attachEvent>传统方式
function addEventListener(element,eventName,handleFn){
if(element.addEventListener){
element.addEventListener(eventName,handleFn);
}else if(element.attachEvent){
element.attachEvent('on'+eventName,handleFn);
}else{
element['on'+eventName] = handleFn;
}
}
以上是关于JavaScript封装一个注册函数解决兼容问题的主要内容,如果未能解决你的问题,请参考以下文章
JS-特效 ~ 05. 缓动框架兼容封装/回掉函数/兼容透明度/层级旋转轮播图正则表达式验证表单注册账号