window.addeventjs事件驱动函数集合addEvent等


Posted in Javascript onFebruary 19, 2008

// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini

// http://dean.edwards.name/weblog/2005/10/add-event/

function addEvent(element, type, handler) {
  if (element.addEventListener) {
    element.addEventListener(type, handler, false);
  } else {
    // assign each event handler a unique ID
    if (!handler.$$guid) handler.$$guid = addEvent.guid++;
    // create a hash table of event types for the element
    if (!element.events) element.events = {};
    // create a hash table of event handlers for each element/event pair
    var handlers = element.events[type];
    if (!handlers) {
      handlers = element.events[type] = {};
      // store the existing event handler (if there is one)
      if (element["on" + type]) {
        handlers[0] = element["on" + type];
      }
    }
    // store the event handler in the hash table
    handlers[handler.$$guid] = handler;
    // assign a global event handler to do all the work
    element["on" + type] = handleEvent;
  }
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
  if (element.removeEventListener) {
    element.removeEventListener(type, handler, false);
  } else {
    // delete the event handler from the hash table
    if (element.events && element.events[type]) {
      delete element.events[type][handler.$$guid];
    }
  }
};

function handleEvent(event) {
  var returnValue = true;
  // grab the event object (IE uses a global event object)
  event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
  // get a reference to the hash table of event handlers
  var handlers = this.events[event.type];
  // execute each event handler
  for (var i in handlers) {
    this.$$handleEvent = handlers[i];
    if (this.$$handleEvent(event) === false) {
      returnValue = false;
    }
  }
  return returnValue;
};

function fixEvent(event) {
  // add W3C standard event methods
  event.preventDefault = fixEvent.preventDefault;
  event.stopPropagation = fixEvent.stopPropagation;
  return event;
};
fixEvent.preventDefault = function() {
  this.returnValue = false;
};
fixEvent.stopPropagation = function() {
  this.cancelBubble = true;
};

Javascript 相关文章推荐
js之WEB开发调试利器:Firebug 下载
Jan 13 Javascript
jQuery 表单验证扩展代码(二)
Oct 20 Javascript
JS分页效果示例
Oct 11 Javascript
JS和JQ的event对象区别分析
Nov 24 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
Apr 19 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
setAttribute 与 class冲突解决
Feb 17 #Javascript
setInterval 和 setTimeout会产生内存溢出
Feb 15 #Javascript
一个js封装的不错的选项卡效果代码
Feb 15 #Javascript
ImageFlow可鼠标控制图片滚动
Jan 30 #Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 #Javascript
Javascript优化技巧(文件瘦身篇)
Jan 28 #Javascript
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 #Javascript
You might like
关于手调机和数调机的选择
2021/03/02 无线电
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
python中遍历文件的3个方法
2014/09/02 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
Android interview questions
2016/12/25 面试题
广告学专业应届生求职信
2013/10/01 职场文书
商务英语专业自荐信
2013/10/14 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
国际商务专业求职信
2014/07/15 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
大学生村官个人总结
2015/02/15 职场文书
论语读书笔记
2015/06/26 职场文书
公司人力资源管理制度
2015/08/05 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers