obj.onclick = fn1;
obj.attachEvent("onclick", fn1); // 此方法IE11, Chrome, FF,已经不支持了,而且fn1中的this指向window,按常理说应该指向obj
obj.addEventListener("click", fn1, false | true); //此方法只有IE11, Chrome, FF才有此方法
obj.onclick = null;
obj.detachEvent("onclick", fn1);
obj.removeEventListener("click", fn1, false | true);
所以兼容写法可以这样写:
/**
* 为元素绑定/取消事件函数的兼容写法
* @type {{addHandler: MiaoV.EventUtil.addHandler, removeHandler: MiaoV.EventUtil.removeHandler}}
*/
MiaoV.EventUtil = {
addHandler: function(obj, eventName, fn){
if(obj.addEventListener) {// Chrome,FF,IE11支持此方法
obj.addEventListener(eventName, fn, false);
} else {
obj.attachEvent("on" + eventName, function () {
fn.call(obj);//在IE7,8,9,10下, this指向window,用call可以解决这个问题
});
}
},
removeHandler: function(obj, eventName, fn){
if(obj.removeEventListener) {
obj.removeEventListener(eventName, fn, false);
}else {
obj.detachEvent("on" + eventName, function () {
fn.call(obj);
})
}
}
};