Verificando se o jquery é carregado usando Javascript

176

Estou tentando verificar se minha biblioteca Jquery está carregada na minha página HTML. Estou verificando se funciona, mas algo não está certo. Aqui está o que eu tenho:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="/query-1.6.3.min.js"></script>
        <script type="text/javascript">
          $(document).ready(function(){
             if (jQuery) {  
               // jQuery is loaded  
               alert("Yeah!");
             } else {
               // jQuery is not loaded
               alert("Doesn't Work");
             }
          });
        </script>
SoftwareSavant
fonte
3
Não use um R maiúsculo em "$ (document) .Ready"
Serigan 29/12
7
alert(window.$?1:0)
Thielicious
Por que você ainda está usando o antigo padrão xhtml? basta usar em <!doctype html>vez disso
Luke the Geek
Se a $(document)função ready for executada, o jquery será carregado. Portanto, você pode simplesmente fazer $(document).ready(function(){ alert("Ready!"); }); Concedido, isso não mostrará um alerta se o jquery falhar na execução. Mas é suficiente, se você simplesmente precisa verificar se referiu corretamente à biblioteca jquery.
ToolmakerSteve

Respostas:

338

algo não está certo

Bem, você está usando o jQuery para verificar a presença de jQuery. Se o jQuery não estiver carregado, $()nem será executado e seu retorno de chamada não será executado, a menos que você esteja usando outra biblioteca e essa biblioteca compartilhe a mesma $()sintaxe.

Remova seu $(document).ready()(use algo como isso window.onload):

window.onload = function() {
    if (window.jQuery) {  
        // jQuery is loaded  
        alert("Yeah!");
    } else {
        // jQuery is not loaded
        alert("Doesn't Work");
    }
}
BoltClock
fonte
1
Isso ainda gera um erro como é quando jQueryestá indefinido. Você precisa verificar window.jQuery.
precisa saber é o seguinte
@ gilly3: Sim, problemas de escopo irritantes. Fixo.
BoltClock
Eu tenho o arquivo jquery-1.6.3.min.js no mesmo diretório que o arquivo html. Não sei por que ele não carrega.
SoftwareSavant
3
@ DomainEvent: ambos estão no diretório raiz? Você srctem uma liderança /, isso significa que está procurando na raiz.
BoltClock
Na verdade não. Deixe-me mudar isso e tentar.
SoftwareSavant
46

Conforme este link:

if (typeof jQuery == 'undefined') {
    // jQuery IS NOT loaded, do stuff here.
}


existem mais alguns comentários no link, bem como,

if (typeof jQuery == 'function') {...}

//or

if (typeof $== 'function') {...}

// or

if (jQuery) {
    alert("jquery is loaded");
} else {
    alert("Not loaded");
}


Espero que isso cubra a maioria das boas maneiras de fazer isso!

Tushar Shukla
fonte
2
@JakeN Após um certo período de tempo, os votos negativos não podem ser desfeitos, a menos que a postagem seja editada. No entanto, há um problema neste post: if (jQuery) {lançará um erro no modo estrito se o jQuery não estiver carregado, de modo que o último trecho de código é uma má sugestão.
JLRishe
21
if ('undefined' == typeof window.jQuery) {
    // jQuery not present
} else {
    // jQuery present
}
Niko
fonte
15

Você pode fazer isso rapidamente na guia do console ao inspecionar sua página da web.

Por exemplo:

$ === jQuery

Se retornar true, significa que está carregado.

Alexein
fonte
Isso gerará uma exceção se o jQuery não estiver carregado, no entanto:Uncaught ReferenceError: jQuery is not defined
Batkins 4/18
10

Apenas uma pequena modificação que pode realmente resolver o problema:

window.onload = function() {
   if (window.jQuery) {  
       // jQuery is loaded  
       alert("Yeah!");
   } else {
    location.reload();
   }
}

Em vez de $(document).Ready(function()usar window.onload = function().

Nika Tsilosani
fonte
1

Se jQueryestiver carregando de forma assíncrona, você pode esperar até que seja definido, verificando-o a cada período de tempo:

(function() {
    var a = setInterval( function() {
        if ( typeof window.jQuery === 'undefined' ) {
            return;
        }
        clearInterval( a );

        console.log( 'jQuery is loaded' ); // call your function with jQuery instead of this
    }, 500 );
})();

Este método pode ser usado para qualquer variável, você está esperando para aparecer.

V.Volkov
fonte
-2

Você pode apenas digitar window.jQueryno console. Se retornar uma função (e, n) ... Então é confirmado que o jquery está carregado e funcionando com sucesso.

Bharadwaj
fonte
-4

Uma maneira rápida é executar um comando jQuery no console do desenvolvedor. Em qualquer navegador, pressione F12 e tente acessar qualquer elemento.

 $("#sideTab2").css("background-color", "yellow");

insira a descrição da imagem aqui

Jajikanth pydimarla
fonte