Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bills

[Resolvido] Inserir javascript dinamicamente

Recommended Posts

Estou tentando fazer uma espécie de include para javascript. O código é até adicionado à pagina mas quando chamo alguma função do código adicionado simplesmente não funciona. Por favor, alguém pode me ajudar?

 

// função include
function include(file_path) {
var j = document.createElement("script");
j.type = "text/javascript";
j.src = file_path;
var scripts = document.getElementsByTagName("script");
       // insere sempre como o primeiro script da pagina
document.getElementsByTagName('head')[0].insertBefore(j,scripts[0]);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentando fazer uma espécie de include para javascript. O código é até adicionado à pagina mas quando chamo alguma função do código adicionado simplesmente não funciona. Por favor, alguém pode me ajudar?

 

// função include
function include(file_path) {
var j = document.createElement("script");
j.type = "text/javascript";
j.src = file_path;
var scripts = document.getElementsByTagName("script");
       // insere sempre como o primeiro script da pagina
document.getElementsByTagName('head')[0].insertBefore(j,scripts[0]);
}

 

Achei meio estranho esse src...

Mas enfim, faça o seguinte, abra com o Chrome e aperte CTRL + SHIFT + J, aí ele irá mostrar algum erro

Compartilhar este post


Link para o post
Compartilhar em outros sites
j.type = "text/javascript";
       j.src = file_path;

Tente:

j.setAttribute('type', "text/javascript");
       j.setAttribute('src', file_path);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda continua sem identificar o código adicionado. Vou dar um exemplo:

 

- Imagine o documento 'include.js' com apenas minha function:

function include(file_path) {
var j = document.createElement("script"),
head = document.getElementsByTagName('head')[0]

j.setAttribute('type', "text/javascript")
j.setAttribute('src', file_path)

head.insertBefore(j,head.firstChild)
}

 

- E também o documento 'x.js' com a seguinte função apenas:

var msg = function(m) {
alert(m)
}

 

- E o documento 'teste.html' testaria o código:

<html>
<head>
<script type="text/javascript" src="include.js"></script>

<script type="text/javascript">
	include('x.js')
	msg("olá");
</script>
</head>
<body>
</body>
</html>

 

Porém o "include" faz o que ele deveria fazer, adicinar o script, mas o script adicionado não é lido pelo navegador. Com isso a messagem de erro Uncaught ReferenceError: msg is not defined aparece no console.

 

Alguém sabe como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o 'problema', é que a sua chamada a função, não estava 'esperando' que o script terminasse de carregar.

Veja:

<html>
<head>
<script type="text/javascript">
function include(file_path) {
	var j = document.createElement("script"),
	head = document.getElementsByTagName('head')[0]

	j.setAttribute('type', "text/javascript")
	j.setAttribute('src', file_path)

	head.insertBefore(j,head.firstChild)
}
include('x.js');

window.setTimeout( 
	function(){ msg('ola') }, 200 
);
</script>
</head>
<body>


</body>
</html>

 

coloquei o setTimeout, apenas para ilustrar a situação. Não use dessa forma.

Crie um callback para a tua função include.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando há a necessidade de um PHP Include no JavaScript, gosto da versão do PHP.JS

 

Se você não usa o "framework" deles, pode apagar do comentário // BEGIN REDUNDANT pra baixo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.