js:window.onload事件详解

可能你也碰到过这种情况 , 就是在 js 的代码中用了 window.onload , 可能会影响到 body 中的 onload 事件。你可以全写在 body 中,也可以全放到 window.onload 中,但是这样并不是很方便,有时我们需要两个同时用到。这时就要用 window.attachEvent window.addEventListener 来解决一下。

 

下面是一个解决方法。

if (document.all){

window.attachEvent('onload', 函数名 )//IE

}

else{

window.addEventListener('load', 函数名 ,false);//firefox

} 在近来的工作中,用到了 attachEvent 方法,该方法可以为某一事件附加其它的处理事件,有时候可能比较有用,这里将其基本用法总结一下。

 

其语法可以查看《 DHTML 手册》,里面有详细的说明,这里贴一个例子,该例子来自互联网:

 

document.getElementById("btn").onclick = method1;

document.getElementById("btn").onclick = method2;

document.getElementById("btn").onclick = method3;

如果这样写 , 那么将会只有 medhot3 被执行

 

写成这样:

var btn1Obj = document.getElementById("btn1");

//object.attachEvent(event,function);

btn1Obj.attachEvent("onclick",method1);

btn1Obj.attachEvent("onclick",method2);

btn1Obj.attachEvent("onclick",method3);

执行顺序为 method3->method2->method1

 

 

如果是 Mozilla 系列,并不支持该方法,需要用到 addEventListener

var btn1Obj = document.getElementById("btn1");

//element.addEventListener(type,listener,useCapture);

btn1Obj.addEventListener("click",method1,false);

btn1Obj.addEventListener("click",method2,false);

btn1Obj.addEventListener("click",method3,false);

执行顺序为 method1->method2->method3

 

综合实例:

window.onload=function(){function1();function2();} 

function addLoadEvent(func){

    var oldonload=window.onload;

    if(typeof window.onload!='function'){

        window.onload=func;

    }else{

        window.onload=function(){

            oldonload();

            func();

        }

    }

}

添加要加载执行的事件 :

 

addLoadEvent(aaa);

addLoadEvent(bbb);

因此要想在你的程序中给一个事件指派多个处理过程的话,只要首先判断一下浏览器,然后根据不同的浏览器,选择使用 attachEvent 还是 addEventListener 就可以了。实例如下

if (document.all) { 

    window.attachEvent('onload', handler1); 

    window.attachEvent('onload', handler2); 

}  else {

    window.addEventListener('load', handler1, false); 

    window.addEventListener('load', handler2, false); 

}

 

<script type="text/javascript">

window.onload = function(){

var SDmodel = new scrollDoor();

SDmodel.sd(["m01","m02","m03","m04","m05"],["c01","c02","c03","c04","c05"],"sd01","sd02");

MqObj(leftnext,"960","109","10","")

}

</script>

 

 

http://www.itbkc.com/tb.php?sc=23edd8&id=35
 

 

posted @ 2011-12-09 15:52  白羊与晚霞  阅读(1868)  评论(0编辑  收藏  举报