我有一个js文件,其中我想要包含jquery。为了包含jquery脚本我正在使用这个clode:
var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
这个工作,我可以看到正确地包含了脚本。我的检查员显示它加载了脚本,但jquery不能正常工作。
任何想法?
答案 0 :(得分:2)
在尝试使用之前,您需要确保动态加载的脚本已实际加载。
为此,请在加载完成后使用script.onload
触发回调。
var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head') [0].appendChild(script);
script.onload = function () {
/* jquery dependent code here */
console.log($);
};
MDN有一个更适合您指定的回调的示例 -
// from https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement#Dynamically_importing_scripts
function loadError (oError) {
throw new URIError("The script " + oError.target.src + " is not accessible.");
}
function importScript (sSrc, fOnload) {
var oScript = document.createElement("script");
oScript.type = "text\/javascript";
oScript.onerror = loadError;
if (fOnload) { oScript.onload = fOnload; }
document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
oScript.src = sSrc;
}
答案 1 :(得分:0)
您的jQuery代码无法正常运行可能是因为浏览器执行您的jQuery代码时尚未加载jQuery。使用下面的函数动态加载带回调的jQuery。将您的jQuery代码放在回调函数中。
function loadScript(url, callback) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = url;
if (typeof(callback) === 'function') {
s.onload = s.onreadystatechange = function(event) {
event = event || window.event;
if (event.type === "load" || (/loaded|complete/.test(s.readyState))) {
s.onload = s.onreadystatechange = null;
callback();
}
};
}
document.body.appendChild(s);
}
/* Load up jQuery */
loadScript('https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function() {
// Put your jQuery code here.
});
答案 2 :(得分:-1)
您需要在HTML代码中包含jQuery。 jQuery不会为你工作,因为你的脚本是在加载jQuery之前加载的。