addEvent:function(el,type,fn,capture) {
if (window.addEventListener) {
if (type === "mousewheel" && document.mozHidden !== undefined) {
type = "DOMMouseScroll";
}
el.addEventListener(type, fn, !!capture);
} else if (window.attachEvent) {
el.attachEvent("on" + type, fn);
}
},
removeEvent:function(el,type,fn,capture) {
if (window.removeEventListener) {
if (type === "mousewheel" && document.mozHidden !== undefined) {
type = "DOMMouseScroll";
}
el.removeEventListener(type, fn, !!capture);
} else if (window.detachEvent) {
el.detachEvent("on" + type, fn);
}
},
//对鼠标滚轮、行为、冒泡以及键盘做的兼容性处理
eventCompat:function(e) {
e || (e = root.event);
var type = e.type;
if (type == 'DOMMouseScroll' || type == 'mousewheel') {
e.delta = (e.wheelDelta) ? -e.wheelDelta / 120 : (e.detail || 0) / 3;
}
if (e.srcElement && !e.target) {
e.target = e.srcElement;
}
//阻止默认行为
if (!e.preventDefault) {
e.preventDefault = function() {
e.returnValue = false;
};
}
//阻止冒泡
if (!e.stopPropagation && e.cancelBubble !== undefined) {
e.stopPropagation = function() {
e.cancelBubble = true;
};
}
//键盘的兼容性处理
if(e.which == null){
e.which = e.charCode != null ? e.charCode : e.keyCode;
}
/*
......其他一些兼容性处理 */
return e;
},
bindAsEventListener:function(context, fun) {
var self = this;
return function(e) {
return fun.call(context, self.eventCompat(e));
}
} //调用:
var dom = document.getElementById('btn');
var object = {
clickCtrl:function(e){
alert(e);
}
}; addEvent(dom, "click", function(){
alert(dom.id);
}); addEvent(dom, "mousedown",
bindAsEventListener(object, function(e){
object.ClickCtrl(e);
}));
 

最新文章

  1. PHP日志记录规范PSR-3
  2. CALayer 4 详解 -----转自李明杰
  3. JS中this的指向问题
  4. 爹地,我找到了!,15个极好的Linux find命令示例
  5. ubuntu update dns server
  6. POJ 2140
  7. R.id.layout等不能识别:cannot be resolved or is not a field
  8. cocos2d-x3.x使用rapidjson
  9. JavaScript中DOM的层次节点(一)
  10. ==和equals详解+例子
  11. 闭包(流畅的python 学习笔记)
  12. ADS1.2中RO base与RW base
  13. Python_sniffer(网络嗅探器)
  14. ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程
  15. 构建web应用之——SpringMVC实现CRUD
  16. 一点感悟:《Node.js学习笔记》star数突破1000+
  17. eclipse常用快捷键和插件
  18. CSS元素定位
  19. .NET的关于人脸识别引擎分享(C#)
  20. [Jmeter系列]Jmeter源码编译步骤(转)

热门文章

  1. PHPExcel——读取excel
  2. js 字符串中的\n不会换行
  3. [USACO] 铺放矩形块 题解
  4. 【JAVA】Calendar
  5. linux install wineQQ
  6. plist文件里的"Bundle versions string, short" 跟 "Bundle version" 的区别及作用
  7. 修改ie的默认值 为ie10
  8. 只具备内网的服务器通过yum安装软件
  9. linux中test与[ ]指令的作用
  10. HTML5 WEB SQL