2010-06-16 41 views
0

我使用jQuery $ .getScript執行javascript。 在執行的腳本中,我沒有訪問我的源文件的函數和變量。

有沒有解決方案?

回答

1

由$ .getScript()執行的腳本可以訪問全局上下文。你可以在你的外部腳本中使用任何全局變量(或者這個功能)。

1

尼克拉弗,我只是花了3(!)小時癡迷爲什麼我的東西不行,你給我的洞察力,我需要使它的工作。

XOXOXOXOXOXOXOXO

值得注意:

你可以聲明一個變量作爲一個jQuery VAR是這樣的:

$variableName = something; 

的jQuery這樣,也有從範圍內的任何地方訪問它。

$(function(){ 
    $alertString = 'Hello World'; 

    $.getScript('test.js', function(){ 
     // do nothing 
    });  
} 

test.js: 

alert($alertString); 
+0

這是非常有用和有趣的知道。 – 2010-10-08 13:29:25

+0

以'$'開頭的變量沒有什麼特別之處,它和任何其他字母一樣工作。作爲參考,請參閱此問題:http://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with-a-dollar-sign – 2012-06-16 16:09:45

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