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隐藏参数post传值实例
Apr 18 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
深入理解(function(){... })();
Aug 16 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Vue插件之滑动验证码
Sep 21 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 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通过sort()函数给数组排序的方法
2015/03/18 PHP
smarty简单应用实例
2015/11/03 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
php批量删除操作代码分享
2017/02/26 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
node.js基础知识小结
2018/02/26 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
Android分包MultiDex策略详解
2017/10/30 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python3.4爬虫demo
2019/01/22 Python
python pygame实现方向键控制小球
2019/05/17 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
乡镇庆八一活动方案
2014/02/02 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
python画条形图的具体代码
2022/04/20 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技
python神经网络 使用Keras构建RNN训练
2022/05/04 Python