Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos
Estou enfrentando um problema muito estranho com javascript no Firefox que para mim é um verdadeiro mistério, já que o mesmo código funciona perfeitamente nos outros navegadores (inclusive no IE, o que me deixou de queixo caído).
O problema
Criei um código javascript para chamar outras funções após carregar a página, mas ao abrir no Firefox 10.0.2 (na maquina local, com protocolo file) o javascript não executa. É como se não existisse nenhum javascript.
O que é mais estranho é que se eu recarregar a página (F5 ou Ctrl+F5) o javascript passa a funcionar que é uma beleza.
No entanto, no servidor online esse problema não ocorreu (usando o mesmo Firefox que apresentou o problema localmente).
Alguém consegue desvendar esse mistério? Segue o código problemático:
(function () {
"use strict";
function aviso () {
alert ('Entrou na página!');
}
function clique () {
document.getElementById('botao').onclick = function () {
alert ('Clicou no botãozinho!!!');
}
}
function inicializar () {
var chamar = [aviso, clique];
for (var x in chamar) {
chamar[x].call();
}
}
return {carregar : function () { document.body == null ? setTimeout(this.carregar, 10) : inicializar(); }}
})().carregar()Se a página não tem nenhum código server-side é esperado que funcione de maneira idêntica tanto pelo protocolo file quanto pelo protocolo http.
Mas tente a solução apontada no post acima, provavelmente resolverá o problema.
>
não abra dessa forma.
instale um servidor web, e acesse atraves do http://localhost
William, eu esqueci de dizer que eu já tenho o servidor web rodando direitinho acessando pelo http://localhost funciona perfeitamente. Eu queria é entender o porque deste erro. Pesquisei bastante e não encontrei nada, então essa maldita curiosidade está me matando! :grin:
Obrigado pela atenção!!
>
Se a página não tem nenhum código server-side é esperado que funcione de maneira idêntica tanto pelo protocolo file quanto pelo protocolo http.
Mas tente a solução apontada no post acima, provavelmente resolverá o problema.
Exatamente, não tem nada de server-side no código então deveria funcionar identicamente nos dois protocolos, mas não funciona. Eu tenho um servidor web rodando na maquina local e outro que roda do pendrive e pelo http://localhost funciona.
Testei isso no Linux e no Windows e em vários computadores e sempre ocorre o mesmo problema. Nas minhas pesquisas não encontrei nenhuma referencia a isso, nem no site da mozilla.
O que eu queria mesmo é entender o porque disso, mas talvez devesse deixar minha curiosidade de lado e não me preocupar mais já que funciona no servidor.
Valeu Henrique
Já verificou o console de erros?
>
é esperado que funcione de maneira idêntica tanto pelo protocolo file quanto pelo protocolo http.
esta informação está incorreta, pois isso não é verdade.
Não se preocupe com o arquivo não rodar pelo file, na boa.. os seus visitantes vão ver através do http, afinal de contas.
Não é a mesma coisa, tô com um pouco de preguiça de explicar agora.
>
Já verificou o console de erros?
Sim, já. Mas só da o aviso de "aspas" na função setTimeout:
Erro: useless setTimeout call (missing quotes around argument?)
Mas neste caso a declaração que eu fiz do setTimeout está correta e após atualizar a página (F5 ou Ctrl+F5) o console não exibe mais esse erro!!
O negócio é estranho mesmo!!:cry:
>
...
Não se preocupe com o arquivo não rodar pelo file, na boa.. os seus visitantes vão ver através do http, afinal de contas.
...
Certo, nos meus "sistemas online" (1 ou 2 perdidos por aí, na verdade :rolleyes:) funciona perfeitamente.
Eu só tinha curiosidade de saber o porque deste erro, pois acho que nenhum conhecimento é inútil (desculpa de curioso nato), então postei para ver se alguém com mais experiência que eu sabia do que se tratava.
Mas pelo jeito eu fui o primeiro a descobrir essa "pérola" (será que eu posso batizar com o meu nome? :grin:).
Só pra constar, testei no FF 10.0.2 no Linux Mint e rodou OK,
não abra dessa forma.
instale um servidor web, e acesse atraves do http://localhost