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,超强推荐base.js
Dec 23 Javascript
一个不错的应用,用于提交获取文章内容,不推荐用
Mar 03 Javascript
js 调用父窗口的具体实现代码
Jul 15 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
Feb 25 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 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
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python利用ansible分发处理任务
2015/08/04 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
Unix里面如何在后台运行程序
2016/10/14 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
保证书范文大全
2014/04/28 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
留学推荐信中文范文
2015/03/26 职场文书
工作收入证明范本
2015/06/12 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Python anaconda安装库命令详解
2021/10/16 Python
python playwrigh框架入门安装使用
2022/07/23 Python