我有一個數組,我已經指定了在調用特定腳本之前需要在JavaScript中加載的文件。讓我們稱這些特定的代碼行爲myscript
。在js文件中加載JavaScript文件。檢查是否加載所有文件的最佳方法是什麼?
我做了如下
var fileNamesArray = new Array();
fileNamesArray.push("abc.js");
fileNamesArray.push("pqr.js");
fileNamesArray.push("xyz.js");
fileNamesArray.push("klm.js");
var totalFiles = jQuery(fileNamesArray).length;
var tempCount = 0;
jQuery.each(fileNamesArray, function(key, value) {
jQuery.getScript(value, function() {
tempCount++;
});
});
檢查是否正在加載的所有文件或沒有,我做以下的事情,但似乎並不有效
var refreshIntervalId = setInterval(function() {
if (tempCount == totalFiles) {
clearInterval(refreshIntervalId);
return;
}
}, 10);
我已經實現了這些面向對象的javascript如下
function Loader() {
this.jQuery = null;
// check for specifically jQuery 1.8.2+, if not, load it
if (jQuery == undefined) {
jQuery.getScript(
"/Common/javascript/jquery/map/javascript/jquery-1.8.2.js",
function() {
this.jQuery = jQuery.noConflict();
});
} else {
var jQueryVersion = $.fn.jquery;
jQueryVersion = parseInt(jQueryVersion.split('.').join(""));
if (182 > jQueryVersion) {
jQuery.getScript(
"/Common/javascript/jquery/map/javascript/jquery-1.8.2.js",
function() {
this.jQuery = jQuery.noConflict();
});
}
}
}
Loader.prototype.LoadAllFile = function() {
//here i am loading all files
}
Loader.prototype.bindMap = function(options) {
this.LoadAllFile();
//execute the script after loading the files... which we called as myscript
}
我正在加載超過12-14個js文件v ia ajax。
如果您觀察到Loader.prototype.bindMap
,我先加載所有文件,然後執行腳本。
但似乎myscript
該腳本在所有文件加載之前開始執行。
只有在加載完所有js文件後才能執行腳本的更好方法是什麼?
你可能會發現你的答案在這裏: http://stackoverflow.com/questions/1293367/how-to-detect-if-javascript-files-are-loaded – brandonscript
聽起來像是你應該考慮一個模塊加載器例如'requirejs'或'curl' – megawac
@ r3mus我無法使用''加載頭部分或主體部分中的文件。只需要加載JS中的所有文件。 – KuKu