ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptで書かれたjsファイルの非同期読み込み関数(配列パラメータの受け渡しをサポート)_javascriptスキル

JavaScriptで書かれたjsファイルの非同期読み込み関数(配列パラメータの受け渡しをサポート)_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:45:281250ブラウズ

独自の使用のために js ファイルをロードします。複数のファイルをサポートしますが、IE とは互換性がありません

コードをコピー コードは次のとおりです:

/**
* js ファイルをロード
* @param {string || url js path
* @param {Function} ロード完了後の fn コールバック
* @return {object} ゲームオブジェクト
* @example
* getScript("url.js",fn)
* getScript(["url-1.js","url-2.js"],fn)
*/
game .getScript = (function() {
var Cache = {};//URL を内部的にキャッシュし、次回リクエストしません
return function(url, fn) {
if ( "string" == = typeof(url)) {
url = [url] //配列でない場合は set を持ち込む
};
var i = 0,//Loop
ok = 0,// いくつかの js が正常にロードされました
len = url.length,// 合計の js の数
head = document.getElementsByTagName("head")[0],
js, _url,
create = function (url) {//js を作成
js = document.createElement("script");
js.type = "text/javascript";
js.src = url;
head.appendChild (js);
return js;
};
for (; i < len;) {
if (cache[encodeURIComponent((_url = url[ i ]))]) {/ /ロードされている場合
(ok >= len && fn) && fn();//すべての js がロードされている場合は、コールバックを実行します
continue;
}
cache[encodeURIComponent(_url) ] = !0;//キャッシュを設定
js = create(_url);//js を作成
fn && (js.onload = function() {
if ( ok >= len) {/ /すべての js が読み込まれたら、コールバックを実行します。
fn();
}
});
};
head = js = _url = create = null;
これを返します ;
}
})();
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。