为了考虑浏览器的兼容性问题,都需要对浏览器进行类型检测。
function addHandler(el, type, fn){
if(window.attachEvent){
//ie事件名称前增加on开头
el.attachEvent("on" + type, fn);
}else{
//记得加上第三个参数,由于ie下没有事件捕捉,所以ff设置为事件冒泡保持一致
el.addEventListener(type, fn, false);
}
}
大多数前端开发中都会找到这样代码,但是从效率上来说还需要进一步考虑,这样在每次绑定时候都需要判断一次,其实在第一次调用的时候就已经知道浏览器的类型。
function addHandler(el, type, fn){
if(window.attachEvent){
//ie事件名称前增加on开头
addHandler = function(el, type, fn){
el.attachEvent("on" + type, fn);
}
}else{
//记得加上第三个参数,由于ie下没有事件捕捉,所以ff设置为事件冒泡保持一致
addHandler = function(type, fn, false){
el.addEventListener(type, fn, false);
}
}
addHandler(type, fn, false); //第一次调用
}
在第一次调用以后的绑定方法就不需要每次都判断类型了,这样减少了重复的类型判断。
参考:
http://parkmy.iteye.com/blog/431306
http://blog.csdn.net/fisher_jiang/article/details/2139089
分享到:
相关推荐
由于html是从上至下加载的,通常我们如果在head部分引入...attachEvent(事件名称, 函数),绑定事件处理函数 detachEvent(事件名称, 函数),解除绑定 DOM方式 addEventListener(事件名称,函数, 捕获) removeEventListe
IE 的事件绑定函数是 attachEvent;而 Firefox, Safari 是 addEventListener;Opera 则两种都支持。使用jQuery就可以使用简单的bind(),或者$().click()之类的函数解决,而如果不使用JavaScript框架的时候,大家可是...
大家都知道,IE中的现代事件绑定(attachEvent)与W3C标准的(addEventListener)相比存在很多问题, 例如:内存泄漏,重复添加事件并触发的时候是倒叙执行等。 下面是用传统事件的方法来处理封装事件的绑定: ...
绑定事件 代码如下: 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( ...
javascript提供了addEventListener和attachEvent两个方法来为DOM节点绑定事件,jquery作了进一步封装,提供了兼容各个浏览器的bind方法。现在来看,这种传统的事件绑定方式存在着以下不足: 1.可能需要绑定很多的...
javascript中使用addEventListener()或attachEvent()绑定事件时会有几个小问题: 一、使用addEventListener()或attachEvent()添加的匿名函数无法移除。 代码如下:var oBtn = document.getElementById(‘btn’);oBtn...
关于js中的事件监听大家用的比较多了,无非是判断浏览器是否支持addEventListener和attachEvent,网上搜索关于事件监听的方法也挺多,但是总有些不是很完善。下面的方法中对于添加事件监听的方法是一样的,只不过在...
但是浏览器有addEventListener和attachEvent方法可供调用,从而模拟出类似于C#中的事件委托的事件触发机制! 代码如下: /* * 功能:事件处理 * Author:LQB * 时间:2009-1-4 * #include JCore.js */ var JEvents = ...
需要用到addEventListener或者attachEvent,用于吧函数操作添加到事件中去,而不是覆盖,但是,attachEvent不支持FF,FF只能用addEventListener。so,就需要一个函数,把它们俩给综合起来,于是乎,这个函数诞生了:...
在之前dom操作中提到了javascript对事件处理的介绍。...在jQuery中,通过bind()对事件绑定,相当于IE浏览器的attachEvent()和标准DOM的addEventListener()。如下例子: 代码如下: <script type=”text/javascript
如果是事件绑定函数,则指向被绑定的元素本身. [removed] //by Go_Rush(阿舜) from http://ashun.cnblogs.com/ alert(this===window) //true 直 接调用的时候,指向window本身 var gorush={ f:...
22、比较 attachEvent 和 addEventListener?(必会) 115 23、document.write 和 innerHTML 的区别?(必会) 115 24、 什么是 window 对象?什么是 document 对象?(必会) 116 25、Js 拖动的原理?(必会) ...
绑定事件 EU.addHandler = function(element,type,handler){ //DOM2级事件处理,IE9也支持 if(element.addEventListener){ element.addEventListener(type,handler,false); } else if(element.attachEvent){ ...