ajax成功加载多个js文件 - javascript
问题描述:
所以现在我有这段代码。在AJAX成功动态加载我的JS文件。但我的观点是......有没有什么方法可以一次加载它们而不用一个一个地输入呢?通过手段像文件夹/ *。JS然后它会加载该文件夹内的所有JS文件。这是我的示例代码。ajax成功加载多个js文件 - javascript
JS
$(document).ready(function() {
$(document).on("click", "a[rel=tab]", function(e) {
// e.preventDefault();
$e = $(e);
pageurl = $(this).attr('href');
$.ajax({
url: pageurl + '?rel=tab',
success: function(data) {
var head = document.getElementsByTagName("head")[0];
var jquery = document.createElement("script");
jquery.type = "text/javascript";
jquery.src = base_url + "/assets/bower_components/datatables.net/js/jquery.dataTables.min.js";
head.appendChild(jquery);
var js = document.createElement("script");
js.type = "text/javascript";
js.src = base_url + "/assets/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js";
head.appendChild(js);
var jsn = document.createElement("script");
jsn.type = "text/javascript";
jsn.src = base_url + "/assets/js/newscript.js";
head.appendChild(jsn);
jsn.onload = function() {
$('#inside').html(data);
}
}
});
//to change the browser URL to 'pageurl'
if (pageurl != window.location) {
window.history.pushState({ path: pageurl }, '', pageurl);
}
return false;
});
$(window).bind('popstate', function() {
$.ajax({
url: location.pathname + '?rel=tab',
success: function(data) {
$('#inside').html(data);
}
});
});
});
答
问题的答案here用下面的代码:
const getScripts =
resources => {
jQuery.when.apply(
null
,resources.map(
resource =>
$.getScript(base_url + resource)
)
)
;
getScripts(["url1","url2"])
.then(
() => console.log("finished loading scripts")
,err => console.warn("Failed:",err)
);
我认为你需要重新考虑,虽然你的设计,重新加载大量的脚本。所有你需要的是通过xhr设置一些内容(不是使用xhr来请求html部分的大爱好者)并且用脚本初始化内容。
而不是重新加载所有的脚本,你应该调用一个函数来初始化内容。
号每个分离的文件需要以加载它,或在脚本文件的情况下,以进行单独的HTTP请求,要定义一个单独的''
被路由到一个脚本,也没有办法在服务器上的文件夹中枚举文件,基本上是相同的原因 – ADyson
在一个侧面说明,因为你使用jQuery,你可以使用'.getScript(url,callback)' –