我使用jQuery $ .getScript執行javascript。 在執行的腳本中,我沒有訪問我的源文件的函數和變量。
有沒有解決方案?
我使用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);
我找到了答案我的題目的把握這裏有幫助的,但我仍然不能使它在自己的環境中工作,直到我偶然發現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;
}
});
這是非常有用和有趣的知道。 – 2010-10-08 13:29:25
以'$'開頭的變量沒有什麼特別之處,它和任何其他字母一樣工作。作爲參考,請參閱此問題:http://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with-a-dollar-sign – 2012-06-16 16:09:45