我正在尝试处理JQuery而不是加载。
(这是一个javascript api,开发人员经常使用它忘记包含jquery,因此我想告诉他们缺少什么)
(function ($, undefined) { //stuff })( jQuery );
如果未加载JQuery,则上面的代码会中断。 我发现的一种解决方法是通过函数添加对Jquery的检查 e.g。
(function ($, undefined) {
//stuff
})( JQueryCheck() );
function JQueryCheck() {
if (window.jQuery == undefined)
alert("no jquery");
else
return jQuery;
}
我不确定这是否足够强大,如果有更好的方法可以让我知道。
这一定是常见问题,但我很难找到解决方案。
答案 0 :(得分:3)
不要在Html中加载像<script src="some-path"></script>
这样的脚本文件
而是这样做:
if(window.jQuery){
$.getScript('path to js file');
}
这将检查jquery,如果它存在,则加载脚本并执行它。
答案 1 :(得分:2)
试试这个:
function JQueryCheck() {
return !!jQuery;
}
或者:
function JQueryCheck() {
try{
jQuery();
} catch(e){
if(e){
return false;
} else {
return true;
}
}
}
或者:
function JQueryCheck() {
if(window.jQuery){
return true;
}else{
return false;
}
}
祝你好运!
答案 2 :(得分:1)
虽然最好解决您遇到的问题但不加载它会做您想要的事情:
if(window.jQuery) {
//jQuery Code
}
或者,如果您在加载本地文件后如果托管的文件失败,则可以这样做:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery.min.js"><\/script>')</script>
答案 3 :(得分:1)
您的代码应该可以正常工作,但您可以稍微简化一下:
(function ($, undefined) {
if(!$) {
return alert("no jquery");
}
//stuff
})(window.jQuery);
您也可以在未加载时加载它:
(function (undefined) {
if(!window.jQuery) {
var script = document.createElement("SCRIPT");
script.src = 'http://code.jquery.com/jquery-2.1.0.min.js';
script.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(script);
// Poll for jQuery to come into existance
var checkReady = function(callback) {
if (window.jQuery) {
callback();
}
else {
window.setTimeout(function() { checkReady(callback); }, 100);
}
};
// Start polling...
checkReady(main);
} else {
main();
}
}());
function main() {
alert("jquery loaded");
};