我正在研究 js 脚本加载技术,并希望在加载所有内容/资源时显示自定义加载器。据我所知,下面是按顺序加载 js 脚本的工作,但是我的网络应用程序在启动后抛出了一些错误。
我的问题是:下面的脚本(在 HTML 底部的 jQuery 之后被称为 <script>
)与简单地将所有这些 js 脚本称为 <script>
有何不同?是在 HTML 的头部吗?为什么一个出错而另一个出错?
$(document).ready(function(){
jLoader(scripts[0]);
});
var i = 0;
function jLoader (script){
return $.ajax({
method: "GET",
dataType: "script",
url: script,
context: document.body,
cache:true,
}).done(function() {
console.log(script + ' loaded!');
step();
}
});
}
function step(){
i = i + 1;
jLoader(scripts[i]);
}
var scripts = ['js/materialize.js','http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.js','js/leaflet.awesome-markers.js',
'js/bouncemarker.js','https://cdn.firebase.com/js/client/2.3.1/firebase.js','js/geofire.min.js','js/myScript.js'];
最佳答案
step(); 后的右大括号过多
当您将变量定义放在顶部时,它应该可以工作::
var i = 0;
var scripts = ['http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.js','https://cdn.firebase.com/js/client/2.3.1/firebase.js'];
$(document).ready(function(){
jLoader(scripts[0]);
});
function jLoader (script){
return $.ajax({
method: "GET",
dataType: "script",
url: script,
context: document.body,
cache:true,
}).done(function() {
console.log(script + ' loaded!');
step();
});
}
function step(){
i = i + 1;
jLoader(scripts[i]);
}
至少在这里是这样:http://jsfiddle.net/adweqcm2/
但请记住:在生产环境中,建议连接脚本。
关于javascript - JS脚本加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483808/