我已尝试在网站上的其他问题中找到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用于使用值填充动态下拉列表,因此,如果不工作,我的意思是下拉列表中没有值:(
答案 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)
感谢大家的帮助,但我认为错误的原因是需要在变量中转义的一些字符。
马丁