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分页函数代码
Sep 10 Javascript
js查错流程归纳
May 04 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
Sep 01 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
JavaScript运行原理分析
Feb 09 Javascript
vue  自定义组件实现通讯录功能
Sep 30 Javascript
layui动态加载多表头的实例
Sep 05 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
我的论坛源代码(八)
2006/10/09 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
php组合排序简单实现方法
2016/10/15 PHP
form自动提交实例讲解
2017/07/10 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python分析学校四六级过关情况
2017/11/22 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
四年级下册教学反思
2014/02/01 职场文书
新文化运动的口号
2014/06/21 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
销售顾问工作计划书
2014/09/15 职场文书
临时用工协议书范本
2014/10/29 职场文书
西湖英语导游词
2015/02/06 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python