在Body Onload上调用三个Javascript函数

时间:2015-01-30 15:32:48

标签: javascript html

我想在body onload期间调用三个JavaScript函数。

<body onload="initializeb(); initializec(); initialize();">

由于某种原因,它只调用前两个,然后甚至没有调用第三个函数。

有人请告诉我为什么在第二个功能之后失败了吗?

3 个答案:

答案 0 :(得分:4)

最好有一个共同的函数initialize()并从那个

调用所有剩余的函数
<body onload="initialize();">

function initialize(){
   initializeb(); 
   initializec(); 
   initialized();
}

答案 1 :(得分:2)

我建议将所有初始化功能合并到一个initialize()函数中,非常类似于用户Ramesh Kotha pointed out

<body onload="initialize();">

function initialize(){
   initializeA(); 
   initializeB(); 
   initializeC();
  // other init tasks ...
}

但是应该补充说,body onload如果你试图支持旧的浏览器(尤其是旧版本的IE或Safari),有时会出现问题,所以如果你在你的浏览器中使用jQuery,我想补充说明应用程序,然后您可以使用jQuery的$(document).ready()处理程序在DOM准备好之后加载任何init函数(这实际上是body onload正在发生的事情,没有任何麻烦),所以这段代码在功能上等同于上面的代码:

// Example using jQuery's .ready() function
$(document).ready(function(){
    initializeA(); 
    initializeB(); 
    initializeC();
    // other init tasks ...
});

其中一个函数未被调用的原因很可能是由于函数中的错误。只需在您认为无效的函数顶部放置console.log()语句,然后检查控制台输出:

function initialize() {
    console.log("initialize function has been called");
}

希望这有帮助。

答案 2 :(得分:1)

使用eventlistener怎么样?像这样:

if (document.addEventListener) { 
        window.addEventListener("load", initializeA);   
        window.addEventListener("load", initializeB); 
        window.addEventListener("load", initializeC); 
    } 
else if (document.attachEvent) { 
        window.attachEvent("onload", initializeA);
        window.attachEvent("onload", initializeB); 
        window.attachEvent("onload", initializeC);
    }
else { 
    window.onload = function() {
        initializeA(), initializeB(), initializeC()
    }; 
}