JavaScript を別のファイルに分割しました。JavaScriptファイルが2回読み込まれるのを防ぎたいです。どうやってやるの?
6 に答える
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 コードを実行している場合は変更することをお勧めします。
それらを 2 回含めないでください。結局のところ、インクルードを行っているのはあなたです。
ただし、これらの包含を動的に行っている場合は、グローバル関数またはオブジェクトがスクリプトによって設定されているかどうかを確認できます。たとえば、ファイルに次のスクリプトがあるとします。
Foo = function () {};
そして、次のように含めます。
<script src="../foo.js"></script>
そのスクリプト タグがブラウザによって解析される前はFoo
、undefined
. タグが処理された後Foo
、Function
. それに基づいていくつかのロジックを使用して、ファイルを含める必要があるかどうかを判断できます。
(私が知っている)フレームワークを使用していないため、グローバルスコープ内の特定の変数がすでに宣言されているかどうかを確認することによってのみ行うことができます。
var include1 = true;
内で変数を宣言し、次のinclude1.js
ようにすることができます
if (window.include1 !== true) {
// load file dynamically
}
これを手動で追跡して確認する必要があります。UweB の提案も機能します。
また、ファイルの整理に役立つ Require.js もチェックしてください。