1

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

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

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

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

4

3 回答 3

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');
}
于 2012-09-14T13:34:30.230 回答
0

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

于 2012-09-14T13:31:24.177 回答
0

两种方式:

1 - 使用 addEventListener。

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

2 - 使用这样的黑客:

var func = window.onload;
window.onload = function() {
    if ( func ) func();
    /* code */
};
于 2012-09-14T13:31:53.110 回答