我想从Google的CDN加载jQuery,并在请求成功时执行jQuery代码,但我似乎无法使其正常工作。这是我的代码:
function loadjQuery(success, error) {
var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttp');
xhr.onload = function() { success(xhr.status, xhr.readyState); }
xhr.onerror = function() { error(); }
xhr.open("GET", "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js", true);
xhr.send();
}
loadjQuery(
function(status, state) {
console.log(status) // 200
console.log(state) // 4
console.log($('body')) // Uncaught ReferenceError: $ is not defined
},
function() { setTimeout(loadjQuery, 10000); }
);
任何帮助都会非常感激
答案 0 :(得分:5)
使用以下代码加载JQuery
(function () {
function loadScript(url, callback) {
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState) { //IE
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScript("https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js", function () {
//jQuery loaded
console.log('jquery loaded');
console.log($('body') //works
});
})();
答案 1 :(得分:0)
考虑使用RequireJs(http://requirejs.org/)之类的东西。您需要一个模块化系统来获取您的Google源并加载它以便它可用。然后,您将能够在加载模块后执行操作。在你开始做的时候自己构建它可能需要做很多工作。
关于AMD和requirejs的更多内容可以在这个问题的答案中找到: When does a dynamically loaded JavaScript library become available?