如何在JavaScript中有条件地包含脚本文件?

时间:2014-07-21 14:23:09

标签: javascript

我想知道是否有办法在<script></script>标记内有条件地包含脚本文件。

我试图做这样的事情:

<script>
if(condition)
{
    <script src="/hts/functions.js"></script> //include this file if condition is met
}
</script>

我找到了这段代码:

$.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." );
});

但是,我不明白如何使用它。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

您使用$ .getScript:

进入了正确的轨道
if(someConditionIsTrue){
    // load script from the server
    $.getScript( "somePath/onTheServer/script.js", function( data, textStatus, jqxhr ) {
        // do something after the load is complete
    });
}

答案 1 :(得分:1)

要使用该脚本,请将.getScript回调中的代码添加到页面的JavaScript中。应该在.getScript回调中包含或调用依赖于您正在注入的脚本的任何代码。

在您粘贴的代码中,console.log语句在注入的脚本加载后运行。以下是使用$.getScript加载Underscore.js库并将Underscore版本记录到控制台的示例:

var condition=true;
var pathToScript='http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js';
if(condition){
    // load script from the server
    $.getScript( pathToScript, function( data, textStatus, jqxhr ) {
        console.log(_.VERSION);
    });
};

JSFiddle:http://jsfiddle.net/WA4f4/2/

我稍微修改了你的代码,以便在JSFiddle中工作,并证明getScript回调中的代码可以从注入的脚本中访问变量。