网页加载完毕后会触发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);