据我所知,JQuery 的 getScript 函数使用名为“global eval”的函数在全局上下文中加载脚本文件。是否有特定的设置或方法来更改此设置,以便它改为在我调用它的函数中加载?
如果我执行以下代码名称返回未定义,因为它没有在本地上下文中加载脚本。
function callscript(){
var name='fred';
getScript(abc.js);
}
//abc.js:
alert(name);
最佳答案
我相信我已经找到了使用常规 JQuery ajax 调用的解决方案。诀窍是你将数据类型设置为“文本”,否则如果它的脚本或者如果使用 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,但在这种情况下它完全没问题。
关于javascript - getScript 本地加载而不是全局加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048551/