我有一个动态网页,我需要在另一个javascript文件内导入一个外部JS文件(在IF条件下)。

我试图寻找一个可行的解决办法,但没有成功。

我尝试使用document.createElement()将JS文件加载到DOM,但它也不起作用。显然,Js被加载到DOM中,但在当前Js文件中无法访问。

解决方案在jQuery也将很好


当前回答

你可以动态加载页面内的js,而不是另一个js文件。

你必须使用getScript来加载js文件。

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) {
  console.log(data); // data returned
  console.log(textStatus); // success
  console.log(jqxhr.status); // 200
  console.log('Load was performed.');
});

其他回答

我建议使用AMD javascript类文件requirejs

这是一个很好的例子

http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/

如果你有很多依赖文件,使用AMD/RequireJS。 http://requirejs.org/

jQuery有$.getScript():

描述:使用GET HTTP请求从服务器加载一个JavaScript文件,然后执行它。

你可以动态加载页面内的js,而不是另一个js文件。

你必须使用getScript来加载js文件。

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) {
  console.log(data); // data returned
  console.log(textStatus); // success
  console.log(jqxhr.status); // 200
  console.log('Load was performed.');
});

jQuery的$.getScript()有时是bug,所以我使用我自己的实现,如:

jQuery.loadScript = function (url, callback) {
    jQuery.ajax({
        url: url,
        dataType: 'script',
        success: callback,
        async: true
    });
}

像这样使用它:

if (typeof someObject == 'undefined') $.loadScript('url_to_someScript.js', function(){
    //Stuff to do after someScript has loaded
});