我使用jQuery $ .getScript执行javascript。 在执行的脚本中,我无法访问源文件的函数和变量。
有解决方案吗?
答案 0 :(得分:1)
$ .getScript()执行的脚本可以访问全局上下文。您可以在外部脚本中使用任何全局变量(或函数)。
答案 1 :(得分:1)
Nick Craver,我只花了3(!)小时来思考为什么我的东西不起作用,你给了我所需的洞察力让它发挥作用。
XOXOXOXOXOXOXOXO
有趣的是注意:
您可以将变量声明为jquery var,如下所示:
$variableName = something;
这样,jquery也可以从范围内的任何地方访问它。
$(function(){
$alertString = 'Hello World';
$.getScript('test.js', function(){
// do nothing
});
}
test.js:
alert( $alertString );
答案 2 :(得分:1)
我发现这里的答案对我掌握这个主题很有帮助,但是在我遇到this article on TechMonks之前我还是无法在我自己的背景下工作:
当我将他们的最后一个例子复制/粘贴到我的主.js文件的头部时,它只是起作用了。至少对我来说,$ .getScript()函数被破坏了,这是修复:
jQuery.extend({
getScript: function (url, callback) {
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = url;
// Handle Script loading
{
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function () {
if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
done = true;
//success();
//complete();
if (callback) callback();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
if (head && script.parentNode) {
head.removeChild(script);
}
}
};
}
head.insertBefore(script, head.firstChild);
return undefined;
}
});