1

私は Web サイトを開発しており、window.onload イベントが発生したときに実行されるサイトのすべてのページにリンクされている外部 JavaScript ファイルを持っています。JavaScript は、インライン JavaScript を含まないすべてのページで正常に実行されます。

インライン JavaScript を含むページには、window.onload イベントが発生したときに実行される JavaScript 関数も含まれています。

私が抱えている問題は、window.onload が起動されたときに外部 JavaScript が実行されず、内部 JavaScript のみが実行されることです。インライン JavaScript 関数が外部 JavaScript ファイルの関数を上書きしているように見えます。

外部 JavaScript ファイルが最初に実行され、次にインライン JavaScript が実行されることはわかっています。window.onload で両方の機能を実行できる方法はありますか?

4

3 に答える 3

2

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 に答える