根据我的阅读,
JQuery的getScript函数使用名为“global eval”的函数在全局上下文中加载脚本文件.是否有一个特定的设置或方法来改变它,所以它将在我调用它的函数中加载?
如果我执行以下代码名称返回undefined,因为它未在本地上下文中加载脚本.
function callscript(){
var name='fred';
getScript(abc.js);
}
//abc.js:
alert(name);
最佳答案 我相信我已经使用常规的JQuery ajax调用找到了解决方案.诀窍是你将数据类型设置为’text’,否则如果它的脚本或者使用getScript或替代.get()它将自动运行内部脚本并将其放在全局上下文中.
function abc(){
var msg="ciao";
$.ajax({
url: 'themes/_default/system/message.js',
success: function(data){
eval(data);
},
dataType: "text"
});
}
//message.js
(function() {
alert(msg);
})();
这会像预期的那样警告’ciao’:)
在任何人说什么之前我都在使用eval,但在这种情况下完全没问题.