通过另一个js文件动态加载js文件?

7
有没有办法从一个JS文件中加载其他JS文件?我想让我的单独页面使用“ITS” JS文件,该JS文件将加载jQuery和其他JS文件。 我知道可以将它们全部放到HTML中,即 我在考虑关注点分离,所以想知道是否已经存在任何东西,而不需要我重新发明轮子... 我只需要编辑home.js来更改加载home.htm的其他js(jquery等),home.htm只需指向home.js即可。 谢谢
5个回答

15

您可以参考动态脚本加载。下面是文章的一部分摘录:

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'helper.js';
head.appendChild(script);

3

对于外部域JS链接

var loadJs = function(jsPath) { 
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', jsPath);
    document.getElementsByTagName('head')[0].appendChild(s);
};
loadJs('http://other.com/other.js'); 

对于相同域名的JS链接(使用jQuery)

var getScript = function(jsPath, callback) {
    $.ajax({
        dataType:'script',
        async:false,
        cache:true,
        url:jsPath,
        success:function(response) {
            if (callback && typeof callback == 'function') callback();
        }
    });
};
getScript('js/other.js', function() { functionFromOther(); }); 

2

这与Darin的解决方案类似,只是没有创建任何变量。

document.getElementsByTagName('head')[0].appendChild(document.createElement("script")).src = "helper.js";

1
或者你可以将更易读的解决方案包装在 (function() {...})(); 中。 - eyelidlessness

2

我建议您看一下labJS。这是一个专门用于加载JavaScript的库。正如他们所说:“LABjs的核心目的是成为一种通用的、按需的JavaScript加载器,能够在任何页面的任何位置从任何位置加载任何JavaScript资源。”

欲了解更多信息,请参见labJS主页


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接