Carregar jQuery apenas se não estiver presente

Testa se o jQuery já foi carregado na página, se não, carregar para usar a biblioteca


Imagine você fazendo uma aplicação com jQuery e não sabe se a biblioteca foi carregada na página. Forçar o carregamento da mesma versão do jQuery pode fazer com que cause erros além de tornar a página mais pesada; e se for uma versão diferente causar conflitos.

A solução é simples, verificar se o jQuery foi carregado, se não foi carregado, então carregamos a biblioteca para que o script funcione perfeitamente.

Forma assíncrona inteligente

// Verifica se o jQuery NÃO foi definido
if (typeof jQuery == 'undefined') {

    if (typeof $ == 'function') {
        // warning, global var
        thisPageUsingOtherJSLibrary = true;
    }
    
    function getScript(url, success) {
    
        var script = document.createElement('script');
        script.src = url;
        
        var head = document.getElementsByTagName('head')[0],
        done = false;
        
        //Anexar manipuladores para todos os navegadores
        script.onload = script.onreadystatechange = function() {
        
            if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
            
            done = true;
                
                // função de retorno fornecidos como param
                success();
                
                script.onload = script.onreadystatechange = null;
                head.removeChild(script);
                
            };
        
        };
        
        head.appendChild(script);
    
    };
    
    getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', function() {
    
        if (typeof jQuery=='undefined') {
        
            // Super à prova de falhas - ainda de alguma forma falhou ...
        
        } else {
        
            // jQuery carregado! Certifique-se de usar .noConflict apenas no caso
            fancyCode();
            
            if (thisPageUsingOtherJSLibrary) {

                // Execute seu código jQuery

            } else {

                // Use .noConflict (), em seguida, execute o código jQuery

            }
        
        }
    
    });
    
} else { // jQuery já foi carregado
    
    // Executar seu código jQuery

};

 

Forma Document.write

var jQueryScriptOutputted = false;
function initJQuery() {
    
    //se o objeto jQuery não está disponível
    if (typeof(jQuery) == 'undefined') {
    
        if (! jQueryScriptOutputted) {
            //apenas a saída do script uma vez ..
            jQueryScriptOutputted = true;
            
            //saída do script (carregá-lo do google api)
            document.write("");
        }
        setTimeout("initJQuery()", 50);
    } else {
                        
        $(function() { 
            // fazer qualquer coisa que precisa ser feito em document.ready
        });
    }
            
}
initJQuery();

Tags: jQuery, dicas
Via css-tricks.com

Total de comentários: 0
avatar