Jump to content
Fórum Script Brasil
  • 0

Interromper execução enquanto certo arquivo não for carregado


vini_loock

Question

Olá, estou tentando fazer uma função similar à include() do PHP, porém, estou com um problema sério.

Se eu chamar a função include, e logo em seguida usar algum dado que está dentro do arquivo a ser incluído, é bem provável que eu não consiga utilizar, porque o arquivo não foi carregado ainda.

Pensei em criar uma variável com um valor qualquer, neste caso false, e no evento onload do script alterar o valor desta variavel para true e enquanto o arquivo está sendo carregado, eu faço um while para segurar a execução do script, mas não está dando certo.

Acredito que seja porque o while não esteja deixando o arquivo carregar e consequentemente entra num loop infinito.

Eu tentei procurar soluções prontas, mas até no php.js existe esse problema.

Se alguém tiver uma ideia, por favor, não hesite em postar aqui.

function include(src){

    loaded = false;
    
    script = document.createElement('script');
    
    script.setAttribute('src', src);
    script.setAttribute('type', 'text/javascript');
    
    document.head.appendChild(script);
    
    script.onload = function(){
        loaded = true;
    };
    
    while(loaded == false){}
    
    return true;

}

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Porque você não usa essa função dentro do evento onload do objeto window e esquece toda essa parte de while e loaded?

Por exemplo:

function include(src){
    script = document.createElement('script');

    script.setAttribute('src', src);
    script.setAttribute('type', 'text/javascript');

    document.head.appendChild(script);
    
    return true;
}

window.addEventListener('load', function () {
    include('script.js');
}, false);

O projeto php.js pode ser interessante para você.

Um abraço.

Link to comment
Share on other sites

  • 0

sim, mas ao passar pela linha que chama a função load, será adicionado a tag script no documentoe então seguirá a execução do javascript, sem esperar o arquivo js ser carregado, podendo dar erro se por acaso você chamar uma fução de dentro do arquivo incluido logo em seguida.

Um exemplo do código problema:

Tenho um arquivo chamado func.js

Esse arquivo tem uma função chamada is_int

Se eu fizer isso:

include('func.js');

is_int('string');

Retornará um erro dizendo que a função is_int não foi definida, porque o arquivo func.js não foi carregado ainda.

É basicamente como uma requisição Ajax.

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