Jump to content
Fórum Script Brasil
  • 0

Script para carregar scripts


Rafael L

Question

//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?

Edited by Rafael L
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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á.

Edited by Rafael L
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...