js事件封装(已兼容)
来源:互联网 发布:程序员专用昵称 编辑:程序博客网 时间:2024/05/19 13:21
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; } }};
0 0
- js事件封装(已兼容)
- 封装事件监听兼容
- 自己封装的兼容事件处理eventHandler.js
- js 事件监听原理,及兼容写法,jquer基本封装原理
- js原生事件封装
- js封装自定义事件
- 停止冒泡事件的方法(已兼容)
- JS键盘事件 兼容浏览器
- js事件浏览器兼容案例
- js鼠标滚轮事件兼容
- Js关于getElmentsByClassName()的兼容与封装
- js通用的事件封装
- JS读取ACCESS数据库类,已封装
- JS获取键盘事件 兼容FF,IE
- JS 取消冒泡事件 兼容火狐IE
- js追加事件FF IE兼容
- js事件驱动机制 浏览器兼容处理
- js中onkeydown事件,兼容IE…
- jsp页面 上传图片预览 的处理
- NSFileManager Class Reference
- Xcode6中创建分类、协议等文件的方法
- 云环境下数据保护方案的选择
- JavaScript中创建对象的几种方式
- js事件封装(已兼容)
- UIImageView的图片居中问题
- selenium exceptionin java (org.openqa.selenium.remote.UnreachableBrowserException)
- C++之并行开发
- 我的Android进阶之旅------>Android中adb install 安装错误常见列表
- SPDY 是什么?如何部署 SPDY?
- centos6上redis搭建配置
- Android 学习笔记七:使用Fragment创建动态UI
- Nim Game