在 Body Onload 上调用三个 Javascript 函数

Calling Three Javascript Function on Body Onload

本文关键字:三个 Javascript 函数 Body Onload 调用      更新时间:2023-09-26

我正在尝试在身体加载期间调用三个JavaScript函数。

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

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

有人可以启发我为什么在第二个功能之后失败吗?

最好有一个通用函数initialize()并从中调用所有剩余的函数

<body onload="initialize();">
function initialize(){
   initializeb(); 
   initializec(); 
   initialized();
}

我建议将所有初始化功能整合到一个initialize()函数中,就像用户Ramesh Kotha指出的那样:

<body onload="initialize();">
function initialize(){
   initializeA(); 
   initializeB(); 
   initializeC();
  // other init tasks ...
}

但是应该补充的是,如果您尝试支持较旧的浏览器(尤其是旧版本的IE或Safari),body onload有时会出现问题,因此我想补充一点,如果您在应用程序中使用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");
}

希望这有帮助。

使用事件侦听器怎么样? 像这样:

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()
    }; 
}