`
deng131
  • 浏览: 673496 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript事件绑定addEventListener,attachEvent

阅读更多
为了考虑浏览器的兼容性问题,都需要对浏览器进行类型检测。

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
1
5
分享到:
评论
2 楼 deng131 2013-09-17  
谢谢你的提醒,是有个地方写错了
1 楼 redhacker 2013-09-13  
写错了吧,那个通用的函数!我改了下,请参考

function addEvent(el, type, fn) {  
    if(window.attachEvent) {  
    	addEvent=function(el, type, fn){  
             el.attachEvent("on" + type, fn);  
        };
    }else{  
    	addEvent=function(el, type, fn){  
            el.addEventListener(type, fn, false);  
        }
    }
    addEvent(el, type, fn);
}

var button = document.getElementById("test");
addEvent(button, 'click', function(){
	alert(1);
});

addEvent(button, 'click', function(){
	alert(2);
})

相关推荐

    javascript 处理事件绑定的一些兼容写法

    在JavaScript中,事件绑定是创建交互式网页的关键部分。本文将详细讲解JavaScript处理事件绑定的一些兼容性写法,适用于不同的浏览器环境。 首先,让我们看一个基本的事件绑定函数的实现。这个函数`addEvent`接受三...

    javascript attachEvent和addEventListener使用方法

    本知识点将介绍 JavaScript 中两种常用的方法:attachEvent 和 addEventListener,以及它们在不同浏览器中的应用和区别。 首先,attachEvent 方法是早期 Internet Explorer 浏览器引入的事件监听方法,它的语法是:...

    javascript为DOM绑定事件 兼容

    为 DOM 绑定事件需要考虑浏览器的兼容性问题,我们可以使用不同的方式来绑定事件,包括直接为 Element 对象绑定事件、使用 W3C 的 addEventListener 和 IE 的 attachEvent 方法,以及自定义绑定函数等。

    javascript重复绑定事件造成的后果说明.docx

    ### JavaScript重复绑定事件的后果与解决方案 #### 一、引言 在进行Web前端开发时,事件处理是非常重要的一部分。合理的事件绑定能够提高用户体验,而错误的事件绑定则可能导致各种问题,比如性能下降、功能异常等...

    javascript事件绑定学习要点

    其次,W3C事件处理函数主要通过addEventListener和removeEventListener两个方法来实现事件的绑定和解绑。这是现代事件绑定的标准方法,它支持一个元素上有多个事件监听器,并且能够在不影响其他监听器的情况下添加或...

    javascript大事绑定学习要点_.docx

    对于IE浏览器,它使用不同的事件绑定方式:`attachEvent`和`detachEvent`。这两个方法的用法与`addEventListener`和`removeEventListener`类似,但有一些差异,比如事件处理函数的`this`指向不同,以及没有第三个...

    javascript attachEvent绑定多个事件执行顺序问题

    为了更好地管理事件处理函数,我们通常会在JavaScript中创建一个专门的事件绑定函数。例如: ```javascript function bind(el, name, fn) { return el.addEventListener ? el.addEventListener(name, fn, false) :...

    js事件绑定机制1

    - `attachEvent`: 在IE浏览器中(非IE9及以上版本)使用,功能与`addEventListener`类似,但是事件处理顺序与`addEventListener`相反,且不支持事件捕获阶段。 理解JavaScript的事件绑定机制对于编写高性能、可维护...

    详解javascript事件绑定使用方法

    在早期的浏览器中,如IE浏览器,事件绑定通常使用attachEvent方法,而其他现代浏览器则使用addEventListener方法。attachEvent方法是IE浏览器特有的,它接受两个参数:事件名称和事件处理器函数。例如,要为一个按钮...

    (word完整版)javascript看qq中多事件绑定的执行顺序.doc

    总之,JavaScript在不同浏览器环境下的事件绑定存在差异,特别是IE浏览器的`attachEvent`方法。开发者需要了解这些差异,并根据实际需求选择合适的解决方案,以确保事件处理函数在所有目标浏览器中都能按预期顺序...

    JavaScript程序设计——事件处理实验报告.docx

    - **JavaScript事件注册**:通过`addEventListener`或`attachEvent`(IE浏览器)为元素添加事件监听器,也可以使用HTML属性直接绑定事件处理函数,如`onclick="functionName()"`。 - **事件处理函数**:定义函数来...

    事件绑定和自定义属性

    在JavaScript中,我们可以使用addEventListener或attachEvent(IE浏览器)来实现这一功能。事件绑定允许我们创建响应式的应用程序,提高用户体验。在HTML5中,事件可以直接在元素上通过`on[eventname]`属性设置,如`...

    javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结

    4. IE特有:`attachEvent`和`detachEvent`,用于事件绑定和解绑。它们仅在Internet Explorer浏览器中有效,且`this`指向`window`,事件处理函数可以重复绑定,但只执行一次。 5. W3C标准:`addEventListener`和`...

    addEventListener和attachEvent二者绑定的执行函数中的this不相同

    在JavaScript中,`addEventListener`和`attachEvent`都是用于向元素添加事件监听器的方法,但它们之间存在一些关键差异,特别是在处理`this`关键字时。`addEventListener`是W3C标准的一部分,被大多数现代浏览器支持...

    事件绑定、事件监听、事件委托.pdf

    `attachEvent()`方法与`addEventListener()`相似,但它只支持冒泡阶段的事件处理。 事件委托(也称为事件代理)是事件监听的一个重要应用,它利用了事件冒泡的机制来简化事件处理器的管理。事件冒泡是指一个事件不...

    浅谈addEventListener和attachEvent的区别

    在JavaScript中,处理DOM事件监听有两个主要的方法:`addEventListener` 和 `attachEvent`。这两个方法在功能上相似,但存在一些关键的区别,特别是在浏览器兼容性和事件处理方式上。 `addEventListener` 是W3C标准...

    javascript中的绑定与解绑函数应用示例.docx

    本文详细介绍了 JavaScript 中事件绑定与解绑的方法,并通过具体的代码示例展示了在不同浏览器环境下的实现方式。了解这些基础知识对于前端开发者来说至关重要,能够帮助我们更好地控制页面的行为,提升用户体验。...

Global site tag (gtag.js) - Google Analytics