// 跨浏览器兼容的事件处理程序(能力检测)
// 兼容性处理封装在eventshiv对象的众多方法中
// 如:eventshiv.addHandler(btn, 'click', f1);
var eventshiv = {
// event兼容
getEvent : function (event) {
return event? event : window.event;
},
// type兼容
getType : function (event) {
return event.type;
},
// target兼容
getTarget : function (event) {
return event.target? event.target : event.srcElement;
},
// 添加事件句柄
addHandler : function (element,type,listener) {
if (element.addEventListener) {
// 2级 DOM
element.addEventListener(type, listener, false);
} else if (element.attachEvent) {
// IE
element.attachEvent('on' + type, listener);
} else {
// 0级 DOM
// element.onclick === element['onclick']
// 在这里由于.与'on'字符串不能链接,只能用后者
element['on' + type] = listener;
}
},
// 移除事件句柄
removeHandler : function (element,type,listener) {
if (element.removeEventListener) {
// 2级 DOM
element.removeEventListener(type, listener, false);
} else if (element.detachEvent) {
// IE
element.detachEvent('on' + type, listener);
} else {
// 0级 DOM
// element.onclick === element['onclick']
// 在这里由于.与'on'字符串不能链接,只能用后者
element['on' + type] = null;
}
},
// 取消默认行为
preventDefault : function (event) {
if (event.preventDefault) {
// 非IE
event.preventDefault();
} else {
// IE
event.returnValue = false;
}
},
// 阻止事件冒泡
stopPropagation : function (event) {
if (event.stopPropagation) {
// 非IE
event.stopPropagation();
} else {
// IE
event.cancelBubble = true;
}
}
}
console.log('eventshiv.js 文件加载成功!');