在window.onload上运行两个函数(一个在外部文件中,一个在内联Javascript中)

在window.onload上运行两个函数(一个在外部文件中,一个在内联Javascript中),javascript,javascript-events,Javascript,Javascript Events,我正在开发一个网站,我有一个外部JavaScript文件,该文件链接到该网站的每个页面,当window.onload事件被触发时执行。JavaScript在不包含任何内联JavaScript的所有页面上都可以执行 任何包含内联JavaScript的页面也包含一个JavaScript函数,该函数在激发window.onload事件时执行 我遇到的问题是,当启动window.onload时,外部JavaScript不会执行,只有内部JavaScript会执行。似乎内联JavaScript函数覆盖了外

我正在开发一个网站,我有一个外部JavaScript文件,该文件链接到该网站的每个页面,当window.onload事件被触发时执行。JavaScript在不包含任何内联JavaScript的所有页面上都可以执行

任何包含内联JavaScript的页面也包含一个JavaScript函数,该函数在激发window.onload事件时执行

我遇到的问题是,当启动window.onload时,外部JavaScript不会执行,只有内部JavaScript会执行。似乎内联JavaScript函数覆盖了外部JavaScript文件中的函数


我知道首先执行外部JavaScript文件,然后执行内联JavaScript。我是否可以在window.onload上执行这两个函数?

这可能是一个解决方案,而不是一个适当的修复方案,但是您可以将内联JS放在html页面的底部,以便在页面加载后自动调用它。这意味着您不必实际使用
window.onload()
两种方法:

1-使用addEventListener

window.addEventListener("load", function(){ /*code*/ }, false);
2-使用如下黑客:

var func = window.onload;
window.onload = function() {
    if ( func ) func();
    /* code */
};
var onload = function () {
    // Do something
    alert('Hello');
};

if(window.onload) {
    // If a function is already bound to the onload event, execute that too.
    var fn = window.onload;
    window.onload = function () {
        fn();
        onload();
    };
} else {
    window.onload = onload;
}

将第二个执行的脚本更改为以下内容如何:

var func = window.onload;
window.onload = function() {
    if ( func ) func();
    /* code */
};
var onload = function () {
    // Do something
    alert('Hello');
};

if(window.onload) {
    // If a function is already bound to the onload event, execute that too.
    var fn = window.onload;
    window.onload = function () {
        fn();
        onload();
    };
} else {
    window.onload = onload;
}
或者使用类似的库,这样您就可以:

$(document).ready(function() {
    alert('Hello');
}

您是否使用某种语法
window.onload=function(){}
?不能为
window.onload
分配多个函数。如果同一事件有多个处理程序,则需要使用专用的事件API。我建议使用包含此类API的库(例如jQuery)。
addEventListener()
未在IE8中实现-这一点不能忽略。加载页面的所有资源(图像等)后会触发“加载”事件。底部的脚本可能在此之前执行。没有保证。感谢@fsmmu…通过将内联JavaScript重写为jQuery函数,这两个函数现在都可以在页面加载时执行!非常感谢!