有没有办法在另一个JS文件中包含一个Javascript文件?

时间:2011-04-18 14:47:20

标签: javascript jquery

我已尝试在网站上的其他问题中找到3条建议,但似乎没有一条适合我,我不确定原因。

// #1
var imported = document.createElement('script');
imported.src = '/path/to/imported/script';
document.getElementsByTagName('head')[0].appendChild(imported);


// #2
// jQuery
$.getScript('/path/to/imported/script.js', function()
{
    // script is now loaded and executed.
    // put your dependent JS here.
});


// #3
document.write( '<script language="javascript" src="myotherscript.js" />' );

我试图包含的文件基本上是一个包含变量声明的大型文件:

var agent = [
"csv",
"drawfile",
"excel",
"flash",
"hangul",
"html",
"image",
"msword",
"ooxml",
"pdf",
"ppt",
"txt",
"wmf"];

关于可能导致问题的任何想法?

更新

只是更新说我正在尝试包含的JS文件是从数据库动态生成的,所以要避免使用正则表达式来添加和删除相同的代码,我将它存储在一个serparate文件中。< / p>

变量concerend用于使用值填充动态下拉列表,因此,如果不工作,我的意思是下拉列表中没有值:(

5 个答案:

答案 0 :(得分:2)

如果唯一的目的是包含另一个javascript文件来将一堆变量及其值声明到全局范围中,那么为什么在您的其他脚本源包含之前,只需要在html文档的头部<script type="text/javascript" src="myotherscript.js"></script>?< / p>

编辑:

问题是您无法在方法中定义全局变量。您确实有一个合理的选项,可以将整个脚本文件(或至少受影响的部分)封装在jQuery ajax函数中,该函数首先评估您所包含的文件。这将使您包含的变量保持在正确的范围内。这就是我的意思......

$.ajax({
   url: 'path/to/included/file',
   success: function(msg) {
      eval(msg); // This is where your included variables are in regard to scope

      // This is where you would paste all of your dependent functions and whatnot

      }
    });

// Outside of the ajax method, you won't be able to use your included properties

答案 1 :(得分:2)

我现在会使用require plugin我认为jquery会在下一个核心版本1.6中使用它

答案 2 :(得分:1)

var getScript = function(jsPath) {
    $.ajax({
        dataType:'script',
        async:false,
        cache:true,
        url:jsPath
    });
};

答案 3 :(得分:1)

http://requirejs.org/是此类问题中最受欢迎的

答案 4 :(得分:0)

感谢大家的帮助,但我认为错误的原因是需要在变量中转义的一些字符。

马丁