1. ホーム
  2. javascript

[解決済み] 外部スクリプトがロードされていることを確認する

2023-05-04 16:44:39

質問

jqueryプラグインを作成しており、外部スクリプトがロードされていることを確認したいです。これは内部のWebアプリケーションのためのもので、私はスクリプト名/場所を一貫して保つことができます(mysscript.js)。これはまた、ページ上で何度も呼び出すことができるアジャキシープラグインです。

スクリプトがロードされていないことが確認できれば、それを使ってロードします。

jQuery.getScript()

同じスクリプトを何度も読み込ませたくないので、スクリプトが読み込まれたことを確認するにはどうしたらよいでしょうか。これは、スクリプトのキャッシュにより、心配する必要がないものですか?

更新しました。 私たちの組織でこのプラグインを使用する人を制御できず、特定の ID の有無にかかわらずスクリプトがすでにページにないことを強制できないかもしれませんが、スクリプト名は常に同じ場所に同じ名前で表示されることになります。スクリプトの名前を使って、実際にロードされているかどうかを確認できればと思っています。

どのように解決するのですか?

スクリプトがグローバル空間に変数や関数を作成する場合、それらの存在を確認することができます。

外部JS(グローバルスコープ内)--。

var myCustomFlag = true;

そして、これが実行されたかどうかを確認するために

if (typeof window.myCustomFlag == 'undefined') {
    //the flag was not found, so the code has not run
    $.getScript('<external JS>');
}

更新情報

の存在を確認することができます。 <script> タグの存在を確認するには、すべての <script> 要素をすべて選択し、それらの src 属性をチェックします。

//get the number of `<script>` elements that have the correct `src` attribute
var len = $('script').filter(function () {
    return ($(this).attr('src') == '<external JS>');
}).length;

//if there are no scripts that match, the load it
if (len === 0) {
    $.getScript('<external JS>');
}

あるいは、次のように焼くこともできます。 .filter() 機能をセレクタに直接組み込むこともできます。

var len = $('script[src="<external JS>"]').length;