Javascript 检查jquery是否已加载,如果为false则加载

Javascript 检查jquery是否已加载,如果为false则加载,javascript,jquery,Javascript,Jquery,是否有人知道如何检查jquery是否已加载(使用javascript),然后在未加载时加载它 差不多 if(!jQuery) { //load jquery file } 也许是这样的: <script> if(!window.jQuery) { var script = document.createElement('script'); script.type = "text/javascript"; script.src = "path/to/jQue

是否有人知道如何检查jquery是否已加载(使用javascript),然后在未加载时加载它

差不多

if(!jQuery) {
    //load jquery file
}

也许是这样的:

<script>
if(!window.jQuery)
{
   var script = document.createElement('script');
   script.type = "text/javascript";
   script.src = "path/to/jQuery";
   document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

如果(!window.jQuery)
{
var script=document.createElement('script');
script.type=“text/javascript”;
script.src=“path/to/jQuery”;
document.getElementsByTagName('head')[0].appendChild(脚本);
}
避免使用“if(!jQuery)”,因为IE将返回错误:jQuery是“未定义的”

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);
}
</script>
改为使用:if(typeof jQuery=='undefined')


if(typeof jQuery==“未定义”){
var script=document.createElement('script');
script.type=“text/javascript”;
script.src=”http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(脚本);
}
您还需要在将JQuery附加到标头后检查它是否已加载。否则,您将不得不等待window.onload事件,如果页面有图像,则该事件会变慢。下面是一个示例脚本,它检查JQuery文件是否已加载,因为您将无法方便地使用$(document).ready(函数

试试这个:

<script>
  window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>')
</script>

尽管你可能有一个头部附加,但它可能不适用于所有浏览器。这是我发现的唯一一个能始终如一地工作的方法

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
  document.write('<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"><\/script>');        
  } 
</script>

if(typeof jQuery==“未定义”){
文件。写(“”);
} 
方法1:

if (window.jQuery) {  
    // jQuery is loaded  
} else {
    // jQuery is not loaded
}
方法2:

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded
} else {
    // jQuery is loaded
}
如果jquery.js文件未加载,我们可以按如下方式强制加载:

if (!window.jQuery) {
  var jq = document.createElement('script'); jq.type = 'text/javascript';
  // Path to jquery.js file, eg. Google hosted version
  jq.src = '/path-to-your/jquery.min.js';
  document.getElementsByTagName('head')[0].appendChild(jq);
}

我在我的项目中使用CDN,作为回退处理的一部分,我使用了以下代码

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
                if ((typeof jQuery == 'undefined')) {
                    document.write(unescape("%3Cscript src='/Responsive/Scripts/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));   
                }
</script>

if((typeof jQuery=='undefined')){
write(unescape(“%3Cscript src=”/Responsive/Scripts/jquery-1.9.1.min.js”type='text/javascript'%3E%3C/script%3E”);
}
只是为了验证,我删除了CDN引用并执行了代码。它被破坏了,并且从未进入if循环,因为jQuery的类型是函数,而不是未定义的

这是因为缓存了较旧版本的jquery 1.6.1,它返回函数,并破坏了我的代码,因为我使用的是jquery 1.9.1。由于我需要精确版本的jquery,我对代码进行了如下修改:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
            if ((typeof jQuery == 'undefined') || (jQuery.fn.jquery != "1.9.1")) {
                document.write(unescape("%3Cscript src='/Responsive/Scripts/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));   
            }
</script>

if((typeof jQuery==“undefined”)| |(jQuery.fn.jQuery!=“1.9.1”)){
write(unescape(“%3Cscript src=”/Responsive/Scripts/jquery-1.9.1.min.js”type='text/javascript'%3E%3C/script%3E”);
}

您可以通过多种方式检查jQuery是否已加载,例如:

if (typeof jQuery == 'undefined') {

    // jQuery IS NOT loaded, do stuff here.

}



现在,在检查jQuery是否未加载后,可以按如下方式加载jQuery:

虽然这一部分在这篇文章中得到了很多人的回答,但仍然 为了代码的完整性而回答



老帖子,但我提出了一个很好的解决方案,在几个地方进行了测试

代码:

(函数(url、位置、回调){
//默认值
url=url | |'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js';
位置=位置| | 0;
//检查jQuery是否存在
如果(!window.jQuery){
//初始化
var head=document.getElementsByTagName('head')[0];
//创建元素
var script=document.createElement(“脚本”);
//附加URL
script.src=url;
//附加类型
script.type='text/javascript';
//将脚本附加到
head.appendChild(脚本);
//将脚本移动到适当的位置
head.insertBefore(脚本,head.childNodes[position]);
script.onload=函数(){
if(回调类型=='function'){
回调(jQuery);
}
};
}否则{
if(回调类型=='function'){
回调(jQuery);
}
}
}('https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js“,5,函数($){
console.log($);
}));
在GitHub是更好的解释,但一般来说,这个函数可以添加到HTML代码中的任何地方,如果尚未加载jquery,您将初始化它。


<script>
if (typeof(jQuery) == 'undefined'){
        document.write('<scr' + 'ipt type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></scr' + 'ipt>');
}
</script>
if(typeof(jQuery)=“未定义”){ 文件。写(“”); }
注意,这假设文档有一个
头,它可以附加一个脚本元素to@DanielLeCheminant这一点很好。如果它是
(document.getElementsByTagName('head')[0]| | document.getElementsByTagName('body')[0])。appendChild(脚本)
@Pawel我见过一些实现在第一个脚本标记之前/之后插入元素,因为你知道其中必须有一个。我相信在所有浏览器中都可以在body上附加一个脚本标记。因此,总之,最安全的方法是:(document.getElementsByTagName('head')[0]| | document.getElementsByTagName('script')[0]).appendChild(script);因为至少会有一个script标记的实例。感谢大家的提醒!希望它实际上不必被调用。只需尝试添加一点冗余就不会
document.write
非常不受欢迎了?那
script.onload=function(){alert('jQuery-loaded!';}
?这样行吗?您必须在代码上添加一些注释来解释它。
if (typeof jQuery == 'undefined') {

    // jQuery IS NOT loaded, do stuff here.

}
if (typeof jQuery == 'function')
//or
if (typeof $== 'function')
if (jQuery) {
    // This will throw an error in STRICT MODE if jQuery is not loaded, so don't use if using strict mode
    alert("jquery is loaded");
} else {
    alert("Not loaded");
}
if( 'jQuery' in window ) {
    // Do Stuff
}
    // This part should be inside your IF condition when you do not find jQuery loaded
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "http://code.jquery.com/jquery-3.3.1.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);
(function(url, position, callback){
    // default values
    url = url || 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js';
    position = position || 0;

    // Check is jQuery exists
    if (!window.jQuery) {
        // Initialize <head>
        var head = document.getElementsByTagName('head')[0];
        // Create <script> element
        var script = document.createElement("script");
        // Append URL
        script.src = url;
        // Append type
        script.type = 'text/javascript';
        // Append script to <head>
        head.appendChild(script);
        // Move script on proper position
        head.insertBefore(script,head.childNodes[position]);

        script.onload = function(){
            if(typeof callback == 'function') {
                callback(jQuery);
            }
        };
    } else {
        if(typeof callback == 'function') {
            callback(jQuery);
        }
    }
}('https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js', 5, function($){ 
    console.log($);
}));
<script>
if (typeof(jQuery) == 'undefined'){
        document.write('<scr' + 'ipt type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></scr' + 'ipt>');
}
</script>