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 相关文章推荐
Mootools 1.2教程 Tooltips
Sep 15 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
图片onload事件触发问题解决方法
Jul 31 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
javascript基本类型详解
Nov 28 Javascript
javascript实现二级级联菜单的简单制作
Nov 19 Javascript
JS敏感词过滤代码
Dec 23 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
教你部署vue项目到docker
Apr 05 Vue.js
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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
Python 查看文件的读写权限方法
2018/01/23 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
特色冷饮店创业计划书
2014/01/28 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
感动中国何玥观后感
2015/06/02 职场文书
超市主管竞聘书
2015/09/15 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
详细分析PHP7与PHP5区别
2021/06/26 PHP
关于Python中*args和**kwargs的深入理解
2021/08/07 Python