jQuery $ .getScript – 执行脚本中的旧函数和变量

我用jQuery $ .getScript执行一个javascript。 在执行的脚本中,我无法访问源文件的函数和变量。

有解决方案吗?

$ .getScript()执行的脚本可以访问全局上下文。 您可以在外部脚本中使用任何全局变量(或函数)。

尼克克拉弗,我只花3(!)小时迷恋为什么我的东西不起作用,你给了我所需的洞察力,使它成功。

XOXOXOXOXOXOXOXO

有趣的是:

您可以将变量声明为jquery var,如下所示:

$variableName = something; 

这样jquery也可以从范围内的任何地方访问它。

 $(function(){ $alertString = 'Hello World'; $.getScript('test.js', function(){ // do nothing }); } test.js: alert( $alertString ); 

我发现这里的答案对我掌握这个主题很有帮助,但是在我发布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; } });