Ir para conteúdo
Fórum Script Brasil
  • 0

Script para carregar scripts


Rafael L

Pergunta

//alert('loaded!');

var
    arrPath = new Array(),
    indexCount = 0;

set_load_path = function(path){
        
    var
        last = path.charAt(path.length -1);
        
    if (last != '/')
        path += '/';
    
    arrPath[indexCount] = path;
    indexCount++;
};

loadScript = function(file){
    var
        arrCount = arrPath.length,
        script = null; var states = '';
    
    for (var i=0; i < arrCount; i++){
    
        script = document.createElement('script');

        script.type = "text/javascript";
        script.charset = 'UTF-8';
        
        if(arrPath)
            script.src = arrPath + file;    
        else
            script.src = file;
        
        // DOM é case sensitive? 
        script.onLoad = script.onreadystatechange = function(){
            
            if (script.readyState == 'complete')
                document.head.appendChild(script);
            
            states += script.readyState + '\t';
        }
        
    }
    alert(states);
};

Como podem ver, a função set_load_path assim como a set_include_path no PHP, define os caminhos onde estarão todos os scripts usados em um dado processamento, dessa forma não precisamos ficar incluindo o mesmo path trocentas vezes. A função loadScript varre o array de paths e tenta carregar o script, mas tem algo que não está saindo bem. Podem me ajudar com minha ideia?

Editado por Rafael L
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Testa no opera, com o Dragonfly (Ctrl + Shit + i), você vai ver que não vai funcionar se fizer isso, por exemplo, vamos supor um arquivo test1.js contendo somente um alert('loaded!') em c:/usr/dev/www/test/lib/js, e um outro arquivo test2.js também contendo somente alert('loaded!') em c:/usr/dev/www/test

em test.html contido em c:/usr/dev/www/test chame esse script que escrevi e chame as funcções em outra tag script, assim:

set_load_path('c:/usr/dev/www/test');

set_load_path('c:/usr/dev/www/test/lib/js');

loadScript('test1.js');

loadScript('test2.js');

Vai dar erro, sabe por quê? Porque ele tentará carregar test1.js de c:/usr/dev/www/test, e esse arquivo não existe em tal diretório, mas em c:/usr/dev/www/test/lib/js

Entendeu o problema? Por isso eu precisaria que ao encontrar esse erro ele não tentasse carregar o script ou seja ele não executasse document.head.appendChild('...'); O algorítmo está correto, mas tem algo que não está.

Editado por Rafael L
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...