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

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


vini_loock

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 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...