Quero incluir dinamicamente uma tag de script em uma página da Web, mas não tenho controle sobre o src;
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Agora normalmente colocando
<script type="text/javascript" src="source.js"></script>
na cabeça funciona bem, mas existe alguma outra maneira de adicionar o source.js dinamicamente usando algo como innerHTML?
javascript
src
document.write
Cadell Christo
fonte
fonte
Respostas:
fonte
Você pode usar a
document.createElement()
função assim:fonte
Existe a
onload
função que pode ser chamada quando o script é carregado com êxito:fonte
um bom pequeno script que escrevi para carregar vários scripts:
uso:
fonte
Você pode tentar seguir o snippet de código.
fonte
Isso é trabalho para mim.
Você pode verificá-lo.
fonte
Quando os scripts são carregados de forma assíncrona, eles não podem chamar document.write. As chamadas serão simplesmente ignoradas e um aviso será gravado no console.
Você pode usar o seguinte código para carregar o script dinamicamente:
Essa abordagem funciona bem apenas quando sua fonte pertence a um arquivo separado.
Mas se você tiver o código-fonte como funções embutidas que deseja carregar dinamicamente e adicionar outros atributos à tag de script, por exemplo, classe, tipo, etc., o seguinte trecho o ajudará:
fonte
Bem, existem várias maneiras de incluir o javascript dinâmico. Eu uso este em muitos dos projetos.
Você pode chamar criar uma função universal que pode ajudá-lo a carregar quantos arquivos javascript forem necessários. Há um tutorial completo sobre isso aqui.
Inserindo o Javascript Dinâmico da maneira certa
fonte
a única maneira de fazer isso é substituí-lo
document.write
por sua própria função, que acrescentará elementos ao final da página. É bem simples com o jQuery:Se você tiver o html vindo para document.write em partes como o exemplo da pergunta, será necessário armazenar em buffer os
htmlToWrite
segmentos. Talvez algo assim:fonte
Eu tentei anexando recursivamente cada script
Nota Se seus scripts dependem um após o outro, a posição precisará estar sincronizada.
A Dependência Principal deve estar em último na matriz, para que os scripts iniciais possam usá-la
fonte
Carrega scripts que dependem um do outro com a ordem correta.
Com base na resposta de Satyam Pathak , mas corrigiu a carga. Foi acionado antes do carregamento do script.
fonte
Aqui está um snippet reduzido, o mesmo código que o Google Analytics e o Facebook Pixel usam:
Substitua
https://example.com/foo.js
pelo seu caminho de script.fonte
Um one-liner (embora não haja diferença essencial para as respostas acima):
fonte