JS:attachEvent和addEventListener方法

<SCRIPT LANGUAGE="JavaScript">
<!--
    
/****************************************************************************
    attachEvent使用这个方法,可以给一个事件指派多个处理过程,可是 Mozilla/Firefox 不支持此方法,
    但是它支持另一个 addEventListener 方法,它与 attachEvent不同之处在于attachEvent方法中的事
    件是已'on'开头的,而addEventListener 是没有'on'的,另外它还有第三个参数,一般指定为 false
    ****************************************************************************
/
    function wcj_addEvent(obj,evType,fn){
        
if(obj.addEventListener){
            obj.addEventListener(evType,fn,
false);
            
return true;
        }
        
else if(obj.attachEvent){
            var r 
= obj.attachEvent("on"+evType,fn);
            
return r;
        }
else{
            
return false;
        }
    }

    function init(){
        alert(
"触发我!");
    }

    wcj_addEvent(window,
"load",init);
//-->
</SCRIPT>

 

程序中给一个事件指派多个处理过程的话,只要首先判断一下浏览器,然后根据不同的浏览器,选择使用 attachEvent 还是 addEventListener

if (document.all) {
  
//IE浏览器
  window.attachEvent('onload', handler1);
  window.attachEvent(
'onload', handler2);
}
else {
  
//fx浏览器
  window.addEventListener('load', handler1, false);
  window.addEventListener(
'load', handler2, false);
}

 

注意:attachEvent 所指派的多个过程的执行顺序是随机的,所以这几个过程之间不要有顺序依赖。另外 attachEvent 和 addEventListener 不仅仅适用于 window 对象,其他的一些对象也支持该方法。

posted @ 2009-10-18 23:05  WCJ  阅读(735)  评论(0编辑  收藏  举报