错误:引导';的JavaScript需要jQuery
因此,我正在开发一个简单的javascript小部件,并通过下面的教程启动。我正在动态加载jquery,如下所示:错误:引导';的JavaScript需要jQuery,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,因此,我正在开发一个简单的javascript小部件,并通过下面的教程启动。我正在动态加载jquery,如下所示: if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') { 更新,下面是我加载jQuery的方式 var script_tag = document.createElement('script'); script_tag.setAttribute("type", "text/j
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') {
更新,下面是我加载jQuery的方式
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
"https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js");
document.documentElement).appendChild(script_tag);
//Once loaded load other javascripts
if (this.readyState == 'complete' || this.readyState == 'loaded') {
scriptLoadHandler();
}
}
以下是我的scriptLoadHandler
函数:
function scriptLoadHandler() {
// Restore $ and window.jQuery to their previous values and store the
// new jQuery in our local jQuery variable
jQuery = window.jQuery.noConflict(true);
// Call our main function
main();
}
现在,在main方法中,我尝试像这样加载引导js:
function main() {
console.log("undefined" == typeof jQuery);
var head = document.getElementsByTagName("head")[0];
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js";
head.appendChild(js);
}
但它仍然给我上面的错误,即使它们加载的顺序是正确的,当我检查控制台日志时,它给我
false
,这意味着jQuery已经定义 检查JQuery是否在引导加载请求之前加载。如果JQuery尚未加载,则无法加载引导程序
您没有在那里加载jQuery
您应该在这个脚本之前在DOM中创建一个SCRIPT
元素,在jQuery lib位置使用src,或者在我引用的行之后动态加载它(即,创建脚本标记,将src设置为jquery库相对或绝对URL/URI,添加已加载的事件处理程序以执行scriptLoadHandler
,并最终将新脚本附加到DOM)
最简单的方法是在使用脚本之前通过脚本标记加载脚本
编辑:OP提供更多信息后,以下是解决方案:
OP没有发布我所看到的所有相关代码,因为then
if(this.readyState==“complete”| | this.readyState==“loaded”)
不太可能,是的,但我再次认为在引导主题模板中动态加载jQuery是没有意义的。我会选择直接从CDN加载jQuery…Ya在网站上下文中没有真正意义,但可能OP使用了一些用户脚本,希望绝对确保加载特定的jQuery 2.1.4版本等等nt覆盖加载的任何其他版本,或者如果jQuery尚未包含,则加载它,但我只是猜测,不知何故问题不清楚。编辑:忘记用户脚本,这是一个小部件,所以确实有意义:所以我正在开发一个简单的javascript小部件
伙计们,当我说//在这里加载jQuery
时,我是说我已经加载了,我刚刚加载了我不会发布详细信息。如果你这么想,让我更新一下帖子want@hussain,您不能在调用代码之前简单地添加
吗?我确实检查过,并且在文档响应中jquery脚本位于引导脚本之上。注释不用于扩展讨论;此对话已被删除。
function loadScript(src, callback) {
var js = document.createElement('script');
js.src = src;
js.type = 'text/javascript';
if (typeof callback === 'function') {
js.addEventListener('load', callback);
}
document.body.appendChild(js);
}
var myScript = function () {
//alert(window.jQuery.fn.jquery);
alert($.fn.modal ? 'Bootstrap loaded' : 'Bootstrap not loaded');
}
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') {
window.oldJQuery = window.jQuery; // so that you can return back whenever you want
loadScript('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', function () {
loadScript('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js', myScript);
});
} else {
loadScript('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js', myScript);
}