5

javascript ファイルがそのファイル名で既にページに添付されているかどうかを確認する方法はありますか。

例:

if ("path-to-script/scriptname.js") already embeded
{
call related function
}
else
{
Append '<script src="path-to-script/scriptname.js" type="text/javascript"> </script> '
call related function
}

基本的に、同じページに 1 つのスクリプトを 2 回添付することは望ましくありません。

4

6 に答える 6

7

スクリプトに含まれるオブジェクトや関数が事前にわかっているとは限りません。そのような場合は、目的の src を含むスクリプト タグを検索できます。

jquery の場合:

$("script[src*='"+scriptName+"']");

jquery を使用しない場合:

document.querySelector("script[src*='"+scriptName+"']");
于 2013-11-20T17:43:23.063 に答える
6

次のように、スクリプトファイルの実際の関数が存在するかどうかをテストする必要があります。

if (window.function_name) {
    // script loaded
} else {
    // script not loaded
}
于 2012-09-17T09:42:54.807 に答える
2

@zathrus に同意しますが、このようなことにはrequirejsを使用する必要があると思います。コードを実行する前に依存関係を取得する必要があるという考え方です。使用している上記の方法は機能する可能性がありますが、何も保証できません。

RequireJS は、すべての依存関係の読み込みを美しく維持します。学ぶのもとても簡単です。

于 2012-09-17T09:49:27.783 に答える
0

私はこれがあなたを助けると思いました。

if (typeof scriptname== "undefined") {
   var e = document.createElement("script");
   e.src = "scriptname.js";
   e.type = "text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e); 
}
于 2012-09-17T09:58:19.103 に答える
0

ライブラリが定義されているかどうかを確認するか、そうでない場合はインポートします。

if ( !jQuery ) {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    document.body.appendChild(s);
    s.src = "path-to-script/scriptname.js";
    void(0);
}
// call function
于 2012-09-17T09:48:11.687 に答える
0

あなたは本当にスクリプトローダーが必要です..あなたが言ったように、javascriptリソースファイル名で特定したいので、これは一種のjavascriptファイルが互いに依存しているためです

www.headjs.com

www.modernizr.com

www.yepnopejs.com

于 2012-09-17T09:56:12.620 に答える