绑定事件

addEventListener:W3C标准写法IE不兼容

attachEvent:兼容IE

注意:1:事件名不同:IE下要加“on“,W3C不加

2:加载事件的执行顺序不同,W3C按绑定事件的顺序来执行,而IE6,7是后绑定的时间先发生

3:this的指向,W3C中,绑定函数中的this指向DOM对象,而IE6,7指向WINDOWS对象

var addEvent = function( obj, type, fn ) {if (obj.addEventListener)obj.addEventListener( type, fn, false );else if (obj.attachEvent) {obj["e"+type+fn] = fn;obj.attachEvent( "on"+type, function() {obj["e"+type+fn]();} );}
};

另一个实现

var addEvent = (function () { if (document.addEventListener) { return function (el, type, fn) { el.addEventListener(type, fn, false); }; } else { return function (el, type, fn) { el.attachEvent('on' + type, function () { return fn.call(el, window.event); }); } }
})();

移除事件

var removeEvent = function(obj, type, fn) {if (obj.removeEventListener)obj.removeEventListener( type, fn, false );else if (obj.detachEvent) {obj.detachEvent( "on"+type, obj["e"+type+fn] );obj["e"+type+fn] = null;}
}

加载事件与脚本

var loadEvent = function(func) {var oldonload = window.onload;if (typeof window.onload != 'function') {window.onload = func;}else {window.onload = function() {oldonload();func();}}
}

阻止事件

var cancelEvent = function(event) {event = event||window.eventif (event.preventDefault) {event.preventDefault(  );event.stopPropagation(  );} else {event.returnValue = false;event.cancelBubble = true;}
}

  

取得事件源对象

相当于Prototype.js框架的Event.element(e)

var getTarget = function(event){event = event || window.event;var obj = event.srcElement ? event.srcElement : event.target;return obj
}

转载于:https://www.cnblogs.com/mingjixiaohui/p/5246353.html

javascript处理事件的一些兼容写法相关推荐

  1. Javascript鼠标滚轮事件兼容写法

    1.mousewheel事件(兼容opera,chrome,safari,IE) mousewheel事件对应的event对象包含一个wheelDelta属性.用户滚动鼠标滚轮时,wheelDelta ...

  2. JavaScript中的数组遍历forEach()与map()方法以及兼容写法

    原理: 高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是 ...

  3. 原生JS forEach()和map()遍历的区别以及兼容写法

    一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...

  4. 前端主流浏览器兼容写法(css、js)以及主流框架vue,react的兼容性

    前言: 前端样式很重要,但是因为浏览器种类繁多,内核不同,会导致各种兼容问题.尤其ie,但好在微软对ie不在更新了. 常见浏览器: 常见的浏览器有:IE.Edge(替代了ie).Firefox.QQ浏 ...

  5. map语法获取index_JavaScript中的数组遍历forEach()与map()方法以及兼容写法

    原理: 高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是 ...

  6. [js] 获取浏览器当前页面的滚动条高度的兼容写法

    [js] 获取浏览器当前页面的滚动条高度的兼容写法 document.documentElement.scrollTop || document.body.scrollTop; 个人简介 我是歌谣,欢 ...

  7. ie浏览器样式兼容写法_IE浏览器兼容问题-----html和css的兼容写法

    用户使用的浏览器五花八门,我们要保证每一种浏览器都能兼容我们的代码,不能要求用户去改变浏览器,那么就得在我们的代码上下功夫.此时我们要用到hack. HACK就是针对不同的浏览器写不同的HTML.CS ...

  8. 【转载】前端开发之CSS兼容写法经验总结

    为什么80%的码农都做不了架构师?>>>    前端开发之CSS兼容写法经验总结技术 maybe yes 发表于2014-11-23 22:47 原文链接 : http://blog ...

  9. 获取滚动条滚动距离兼容写法

    在chrome中,浏览器的滚动条是属于body的,可以通过 document.body.scrollTop来获取垂直滚动距离, document.body.scrollLeft来获取水平滚动距离, 火 ...

最新文章

  1. 图片去雾c语言代码,深度学习实现图像去雾
  2. 二十四种设计模式:代理模式(Proxy Pattern)
  3. springboot+hbase 集成
  4. poi 顺序解析word_JavaPOI解析word提取数据到excel
  5. 【项目合作】海隆石油工业集团诚邀巡检识别工程合作伙伴
  6. 值得收藏!动图演示神经架构搜索
  7. 内卷加速 | 本科毕业出国率下降,考研or保研?
  8. 面试题(用栈代替队列的操作和原生map实现)
  9. msp430入门编程07
  10. 面试题1,值传递和参数传递
  11. MySQL 入门(六)—— 索引
  12. PPT 动画模板使用技巧
  13. centos 安装 谷歌BBR
  14. Redis 在新浪微博中的应用
  15. CCF试题 201903-2 二十四点
  16. pyqt5学习笔记——QListView与QListWidget
  17. TMS运输系统价格昂贵?中小物流运输企业数字化,原来可以这么做。
  18. 容联语音机器人入选“2019金融AI大数据十大解决方案”
  19. Python小白的数学建模课-19.网络流优化问题
  20. 打开HFSS出现Unable to detect installed products的报错,要求make sure that config/admin.xml exists

热门文章

  1. CMDB收集资产脚本
  2. Kickstart配置文件解析
  3. 洛谷P2835 刻录光盘
  4. Java基础知识:IO
  5. 使用zlib库进行数据压缩
  6. [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS
  7. 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-
  8. 用户NT AUTHORITYNETWORK SERVICE登录失败解决方法
  9. 醉话没有测试(QA)的测试
  10. 比iPhone8更重要的新App Store,给内容产品的未来指出明路