Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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]);
}>
j.type = "text/javascript";
j.src = file_path;
Tente:
j.setAttribute('type', "text/javascript");
j.setAttribute('src', file_path);Ainda continua sem identificar o código adicionado. Vou dar um exemplo:
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)
}
var msg = function(m) {
alert(m)
}
<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?
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.
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
Obrigado a todos que responderam.
E William Bruno, realmente era a questão de precisar de um setTimeout mesmo.
Acabei achando esse Script https://github.com/ded/script.js ... bem interessante por sinal.
Pode fechar o tópico.
>
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
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