好记性不如烂笔头

有人的地方就有江湖。。。。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

网页加载完毕后会触发onload事件,比如现在我有一个方法要在网页加载完毕后立即执行的话,应该怎么做呢,可以用这样的简单的方式。

1 window.onload=prepareRun;
2 
3 function prepareRun(){
4     //.......
5 }

这条浅显的语句立马解决了问题。

如果现在我还有两个函数prepareRun1和prepareRun2。如果我想让他们都在页面加载时执行,怎么吧?下面的代码可以吗?

 1 window.onload=prepareRun1;
 2 window.onload=prepareRun2;
 3 
 4 function prepareRun1(){
 5     //......
 6 }
 7 
 8 function prepareRun2(){
 9     //........
10 }

经测试这种情况只执行了第二个方法。由此可以得出一个结论,每个事件处理函数只能绑定一条指令。
上面的不行,咱们可以创建一个匿名函数来容纳这两个函数

1 window.onload=function(){
2     prepareRun1();
3     prepareRun2();
4 }

这应该是最简单明了的方法了。这还有一个更加通用的方法,它是由SimonWillison编写的

 1 function addLoadEvent(func){
 2     var oldonload = window.onload;
 3     if(typeof window.onload != 'function'){
 4         window.onload = func;
 5     }else{
 6         window.onload = function(){
 7               oldonload();
 8               func();
 9         }
10     }
11 }

这相当于把那些将在页面加载完毕时执行的函数创建一个队列。如果想把刚才的那两个函数添加到这个队列中,只需写出一下代码就行了。
addLoadEvent(prepareRun1);

addLoadEvent(prepareRun2);

 

posted on 2013-12-16 17:53  划根火柴点根烟  阅读(177)  评论(0编辑  收藏  举报