js事件封装(已兼容)
2015-10-13 10:58
603 查看
html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>点我</button> <br><br> <a href="http://www.baidu.com">我链接到百度!</a> <script src="a.js"></script> <script> var btn = document.querySelector("button"); var link = document.querySelector("a"); var body = document.querySelector("body"); var btnHandler = function(event){ console.log("我是btnHandler内部!"); console.log(EventUtil.getEvent(event).type); console.log("我的target是" + EventUtil.getTarget(event)); console.log("我的current target是" + EventUtil.getEvent(event).currentTarget); // console.log("接下来我要阻止冒泡了!"); // EventUtil.stopPropagation(event); }; var linkHandler = function(event){ EventUtil.preventDefault(event); }; var bodyHandler = function(event){ console.log("\n"); console.log("我是bodyHandler内部!"); console.log(EventUtil.getEvent(event).type); console.log("我的target是" + EventUtil.getTarget(event)); console.log("我的current target是" + EventUtil.getEvent(event).currentTarget); }; EventUtil.addHandler(btn,"click",btnHandler); EventUtil.addHandler(link,"click",linkHandler); EventUtil.addHandler(body,"click",bodyHandler); </script> </body> <html>
a.js代码
/** *自己把dom2级事件封装好,这样可兼容各种浏览器!主要是解决ie8及以下的不兼容问题 **/ var EventUtil = { addHandler: function(elem, type, handler){ if (elem.addEventListener) { elem.addEventListener(type, handler, false); } else if (elem.attachEvent) { //ie8及以下 elem.attachEvent("on" + type, handler); } else { elem["on" + type] = handler; } }, removeHandler: function(elem, type, handler){ if (elem.removeEventListener) { elem.removeEventListener(type, handler, false); } else if (elem.detachEvent) { //ie8及以下 elem.detachEvent("on" + type, handler); } else { elem["on" + type] = null; } }, getEvent: function(event){ //ie返回window.event return event || window.event; }, //获取正在进行的目标而非定义的那个目标(currentTarget) getTarget: function(event){ return event.target || window.event.srcElement; }, //阻止默认事件的执行 preventDefault: function(event){ if (event.preventDefault) { event.preventDefault(); } else { window.event.returnValue = false; } }, //停止冒泡 stopPropagation: function(event){ if (event.stopPropagation) { event.stopPropagation(); } else { window.event.cancelBubble = true; } } };
相关文章推荐
- P20@JavaScript
- JS中对数组的操作方法
- 浅析Javascript中“==”与“===”的区别
- javascript正则表达式和字符串RegExp and String(二)
- JavaScript高级程序设计之BOM之window 对象之系统对话框 第8.1.7讲笔记
- 【JavaScript】引号嵌套问题与Javascript中多行HTML写作方案
- Javascript 面向对象编程-封装
- javascript正则表达式和字符串RegExp and String(一)
- JavaScript高级程序设计之BOM之window 对象之间歇调用和超时调用 第8.1.6讲笔记
- js闭包(一)
- JavaScript执行效率小结
- javascript 闭包详解
- javascript之document.cookie的使用总结
- JavaScript高级程序设计之BOM之window 对象之导航和打开窗口 第8.1.5讲笔记
- json解析
- java 批量去除 文件中的所有注释代码,还可以去除js等文件中的注释
- js保留小数点
- js变量作用域及访问权限的探讨(2)
- jstl if和foreach的混合使用 实现通过后台值控制select默认选项的功能【实例】
- javascript中类的属性访问权限研究(1)