jQuery $ .getScript - 旧函数&执行脚本中的变量

时间:2010-06-16 09:48:50

标签: jquery getscript

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

有解决方案吗?

3 个答案:

答案 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;
 }
});