关于attachEvent和addEventListener

本文通过实例演示了attachEvent和addEventListener两种事件绑定方法在不同浏览器中的表现差异。实验结果显示,在IE中attachEvent按逆序触发事件,而在火狐等浏览器中,addEventListener按顺序触发。

今天学习了一下attachEvent和addEventListener这两个方法

具体代码如下:

=============================================

<html>
<script language="javascript">
    /*
     页面加载时在页面内放置一个层
 */
    document.writeln("<div id='divMix'>&nbsp;</div>");
</script>
<script language="javascript">
    /*
     创建一个按钮,奖其放在先前放置的层内
  使用attachEvent或者addEventListener方法不其注册事件
 */
 var btn=document.createElement("input");
 btn.setAttribute("type","button");
 btn.setAttribute("id","btnEle");
 btn.setAttribute("value","点击我");
 /*
  判断浏览器类型
  我的机器装了4种浏览器(IE,傲游,火狐,netscape)
  我试验的结果是
  IE,傲游支持attachEvent;而火狐,netscape支持addEventListener
 */
 if(btn.attachEvent){
  btn.attachEvent("onclick",method1);
  btn.attachEvent("onclick",method2);
  btn.attachEvent("onclick",method3); 
  /*
     三个方法调用的顺序是method2>method3>method1
     而很多人的博客上看到的却是method3>method2>method1
     很是奇怪,不知是不是浏览器版本的问题,当前IE6.0
  */
 }
 else if(btn.addEventListener){
  btn.addEventListener("click",method1,true);
  btn.addEventListener("click",method2,true);
  btn.addEventListener("click",method3,true);
 }
 /* 获取先前创建的层对象 */
 var div=document.getElementById("divMix");

 /* 使用typeof运算符判断获取的层对象是否存在
    如果存在则奖创建的按钮放到层里面,反之则提示没有
    找到相关对象
 */
 if(typeof(div)=="object"){
     div.appendChild(btn);
  /*
     火狐,netscape好像不支持appendChild这个方法
     所以在火狐,netscape看不到效果
  */
 }else{
  alert("没有找到相关对象!");
 }
 

function method1(){
 alert("method1()");
}


function method2(){
alert("method2()"); 
}


function method3(){
alert("method3()"); 
}

</script>
<body>
</body>
</html>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值