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使用这个方法,可以给一个事件指派多个处理过程,可是 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);
}
//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 对象,其他的一些对象也支持该方法。