addachEvent 和addEventListener的区别?

时间:2021-12-10 19:36:28
请说明下addachEvent 和addEventListener的区别,具体是如何实现的,并能举例说明下

13 个解决方案

#1


attachEvent和addEventListener都是追加事件
attachEvent是ie的方法  
addEventListener是火狐的方法

一般事件兼容都是这么写:


function addEventHandler(oTarget, sEventType, fnHandler){
if(oTarget.addEventListener){
oTarget.addEventListener(sEventType, fnHandler, false);
}else if(oTarget.attachEvent){
oTarget.attachEvent("on" + sEventType, fnHandler);
}else{
oTarget["on" + sEventType] = fnHandler;
}
}

#2


1楼已经说的很清楚了。

#3


引用 1 楼 s_liangchao1s 的回复:
JScript code
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType, fnHandler, false);
        }else if(oTarget.attachEvent){
            oTarget.attachEvent("on" + s…

这段能给我解析下吗?

#4


引用 1 楼 s_liangchao1s 的回复:
JScript code
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType, fnHandler, false);
        }else if(oTarget.attachEvent){
            oTarget.attachEvent("on" + s…

这段能给我解析下吗?

#5


引用 3 楼 yjy84317 的回复:
引用 1 楼 s_liangchao1s 的回复:
JScript code 
    function addEventHandler(oTarget, sEventType, fnHandler){ 
        if(oTarget.addEventListener){ 
            oTarget.addEventListener(sEventType, fnHandler, false); 
        }else if(oTarget.attachEvent){ 
            oTarget.attachEvent("on" + s… 
 
这段能给我解析下吗?

系统支持'addEventListener' 就用addEventListener绑定事件
系统支持'attachEvent' 就用attachEvent绑定事件
否则用 on+事件=function(){}形式添加事件, 比如 button.onclick=function(){}

attachEvent绑定的事件对像里的this指window

addEventListener 绑定的事件里的 this 指 绑定事件的元素本身

#7


大哥,不要说的这么专业性啊,能不能讲的比较通俗点的啊,最好能有个具体的例子加以说明下啊,拜托了。

#8


5楼解释的比较详细...

#9


引用 7 楼 yjy84317 的回复:
大哥,不要说的这么专业性啊,能不能讲的比较通俗点的啊,最好能有个具体的例子加以说明下啊,拜托了。

再加加油吧,这说的已是很通俗的啦,要不先学点基础再说,,,

#10



<SCRIPT LANGUAGE="JavaScript">
function fnHandler()
{
alert("加入了onclick事件")
}
function addEventHandler(){
var oTarget = document.getElementById("target")
if(oTarget.addEventListener)
{
alert("ff下添加事件")
oTarget.addEventListener("click",fnHandler,false);
}
else
{
alert("ie下添加事件")
oTarget.attachEvent("onclick",fnHandler);
}
}

</SCRIPT>
<INPUT TYPE="button" value="目标button" id="target">
<INPUT TYPE="button" VALUE="为目标button加入onclick事件" ONCLICK="addEventHandler()">

5楼已经解释的很清楚了啊 简化版的 自己分别在ie和ff下运行看吧

#11


通俗的解释是:它们是实现相同功能的在不同浏览器中的方法。你就记住当是一个函数,两个名字,有点像Java中的函数重载。

#12


 oTarget.addEventListener("click",fnHandler,false);
这句的最后一个参数,false,这两个起什么作用提,如果改成true会有什么不同?

#13


引用 12 楼 yjy84317 的回复:
oTarget.addEventListener("click",fnHandler,false);
这句的最后一个参数,false,这两个起什么作用提,如果改成true会有什么不同?

怎么说哪,就是如果你设的这个元素有父元素,并且父元素跟你这个元素有相同的响应事件比如都是onclick
,那么如果你设置为false,其单击事件的响应顺序就是有内之外,如果为true则有外之内。一般情况下设置为false.

#1


attachEvent和addEventListener都是追加事件
attachEvent是ie的方法  
addEventListener是火狐的方法

一般事件兼容都是这么写:


function addEventHandler(oTarget, sEventType, fnHandler){
if(oTarget.addEventListener){
oTarget.addEventListener(sEventType, fnHandler, false);
}else if(oTarget.attachEvent){
oTarget.attachEvent("on" + sEventType, fnHandler);
}else{
oTarget["on" + sEventType] = fnHandler;
}
}

#2


1楼已经说的很清楚了。

#3


引用 1 楼 s_liangchao1s 的回复:
JScript code
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType, fnHandler, false);
        }else if(oTarget.attachEvent){
            oTarget.attachEvent("on" + s…

这段能给我解析下吗?

#4


引用 1 楼 s_liangchao1s 的回复:
JScript code
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType, fnHandler, false);
        }else if(oTarget.attachEvent){
            oTarget.attachEvent("on" + s…

这段能给我解析下吗?

#5


引用 3 楼 yjy84317 的回复:
引用 1 楼 s_liangchao1s 的回复:
JScript code 
    function addEventHandler(oTarget, sEventType, fnHandler){ 
        if(oTarget.addEventListener){ 
            oTarget.addEventListener(sEventType, fnHandler, false); 
        }else if(oTarget.attachEvent){ 
            oTarget.attachEvent("on" + s… 
 
这段能给我解析下吗?

系统支持'addEventListener' 就用addEventListener绑定事件
系统支持'attachEvent' 就用attachEvent绑定事件
否则用 on+事件=function(){}形式添加事件, 比如 button.onclick=function(){}

attachEvent绑定的事件对像里的this指window

addEventListener 绑定的事件里的 this 指 绑定事件的元素本身

#6


#7


大哥,不要说的这么专业性啊,能不能讲的比较通俗点的啊,最好能有个具体的例子加以说明下啊,拜托了。

#8


5楼解释的比较详细...

#9


引用 7 楼 yjy84317 的回复:
大哥,不要说的这么专业性啊,能不能讲的比较通俗点的啊,最好能有个具体的例子加以说明下啊,拜托了。

再加加油吧,这说的已是很通俗的啦,要不先学点基础再说,,,

#10



<SCRIPT LANGUAGE="JavaScript">
function fnHandler()
{
alert("加入了onclick事件")
}
function addEventHandler(){
var oTarget = document.getElementById("target")
if(oTarget.addEventListener)
{
alert("ff下添加事件")
oTarget.addEventListener("click",fnHandler,false);
}
else
{
alert("ie下添加事件")
oTarget.attachEvent("onclick",fnHandler);
}
}

</SCRIPT>
<INPUT TYPE="button" value="目标button" id="target">
<INPUT TYPE="button" VALUE="为目标button加入onclick事件" ONCLICK="addEventHandler()">

5楼已经解释的很清楚了啊 简化版的 自己分别在ie和ff下运行看吧

#11


通俗的解释是:它们是实现相同功能的在不同浏览器中的方法。你就记住当是一个函数,两个名字,有点像Java中的函数重载。

#12


 oTarget.addEventListener("click",fnHandler,false);
这句的最后一个参数,false,这两个起什么作用提,如果改成true会有什么不同?

#13


引用 12 楼 yjy84317 的回复:
oTarget.addEventListener("click",fnHandler,false);
这句的最后一个参数,false,这两个起什么作用提,如果改成true会有什么不同?

怎么说哪,就是如果你设的这个元素有父元素,并且父元素跟你这个元素有相同的响应事件比如都是onclick
,那么如果你设置为false,其单击事件的响应顺序就是有内之外,如果为true则有外之内。一般情况下设置为false.