23

JavaScript を別のファイルに分割しました。JavaScriptファイルが2回読み込まれるのを防ぎたいです。どうやってやるの?

4

6 に答える 6

29

js ファイルへのパスに基づいて、スクリプトが含まれているかどうかを確認するテストを次に示します。

function isScriptAlreadyIncluded(src){
    var scripts = document.getElementsByTagName("script");
    for(var i = 0; i < scripts.length; i++) 
       if(scripts[i].getAttribute('src') == src) return true;
    return false;
}

AJAX を介してロードされていないすべてのスクリプトで機能しますが、jsonp コードを実行している場合は変更することをお勧めします。

于 2013-08-09T20:50:27.877 に答える
3

それらを 2 回含めないでください。結局のところ、インクルードを行っているのはあなたです。

ただし、これらの包含を動的に行っている場合は、グローバル関数またはオブジェクトがスクリプトによって設定されているかどうかを確認できます。たとえば、ファイルに次のスクリプトがあるとします。

Foo = function () {};

そして、次のように含めます。

<script src="../foo.js"></script>

そのスクリプト タグがブラウザによって解析される前はFooundefined. タグが処理された後FooFunction. それに基づいていくつかのロジックを使用して、ファイルを含める必要があるかどうかを判断できます。

于 2013-08-09T20:49:54.333 に答える
1

(私が知っている)フレームワークを使用していないため、グローバルスコープ内の特定の変数がすでに宣言されているかどうかを確認することによってのみ行うことができます。

var include1 = true;内で変数を宣言し、次のinclude1.jsようにすることができます

if (window.include1 !== true) {
    // load file dynamically
}
于 2013-08-09T20:48:27.563 に答える
0

これを手動で追跡して確認する必要があります。UweB の提案も機能します。

また、ファイルの整理に役立つ Require.js もチェックしてください。

于 2013-08-09T20:50:37.370 に答える