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

时间:2012-09-14 13:26:14

标签: javascript javascript-events

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

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

我遇到的问题是,当触发window.onload时,外部JavaScript不会执行,只有内部JavaScript会执行。看起来好像内联JavaScript函数会覆盖外部JavaScript文件中的函数。

我知道我的外部JavaScript文件首先被执行,然后执行内联JavaScript。无论如何我可以在window.onload上执行这两个函数吗?

3 个答案:

答案 0 :(得分:2)

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

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

或者使用像jQuery这样的库,您可以这样做:

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

答案 1 :(得分:0)

这可能比一个正确的修复更能解决问题,但是你可以将内联JS放在html页面的底部,以便在加载页面后自动调用它。这意味着您不必实际使用window.onload()

答案 2 :(得分:0)

两种方式:

1 - 使用addEventListener。

window.addEventListener("load", function(){ /*code*/ }, false);

2 - 使用这样的黑客:

var func = window.onload;
window.onload = function() {
    if ( func ) func();
    /* code */
};