Cuidado com o console.log(), ele pode te causar problemas
Cenário de hoje, o mapa(Google Maps) do sistema que eu mexo estava dando problemas com alguns clientes, mas aqui estava perfeito. Ouvi muita reclamação do meu chefe e com a ajuda do @raphaelivan chegamos a conclusão que o problema era o zoom. Ele ficava com zoom bizarro e ponto final, quando mexiam no zoom ele focava na Somália(Oo).
Por questão de segurança pedi pro raphael ver se no notebook dele o problema também existia, então foi a primeira surpresa: no Chrome estava normal, o problema era com o Firefox.
Abri meu Firefox e o mapa abria normal(estava com o firebug ligado). Como o firebug estava ocupando muito espaço na tela resolvi fechar ele, em seguida me veio a idéia "está normal por causa do cache, vamo ver se com F5 a coisa pauleia", dei o F5 e o mapa realmente pauleou.
Mapa pauleado, então chegou a hora de ver o erro, mas o firebug só processa javascript que aconteça enquanto ele está rodando, por isso precisei abrir ele e recarregar a página. Para a minha surpresa o mapa estava normal agora. Vagando mentalmente pelo Reino das pipocas que possuem antena, buscando a resposta para tal problema que desafiava as leis do complexo pensamento "Agora funciona. Agora não funciona.", eu percebi que havia um log de um objeto no firebug, nesse momento descobri o problema instantâneamente com o pensamento "TNC!!! EH A PORRA DO CONSOLE.LOG MALDITO !!!".
Linha removida, problema resolvido.
Mas digamos que você precisa deixar os console.log lá(app em dev?) e não tem saco de remover eles sempre que for fazer deploy, para isso você pode criar um fake console.log().
Simplesmente coloque esse código no primeiro JS que é carregado pela app:
if(typeof(console) == 'undefined') console = { log : function(){} }; if(typeof(console.log) != 'function') console.log = function(){};
Isso irá criar um console.log caso não exista, assim qualquer usuário terá essa função e você não precisará passar pelo que eu passei hoje.
Popularity: 26% [?]
junho 1st, 2011 - 14:28
Eu passei pelo mesmo problema, e tive que criar uma solução para isso tmb:
function c(t){
if (window.console && window.console.log)
console.log(t);
}
novembro 1st, 2011 - 02:18
A forma que é utilizada no JQuery:
if(typeof console != “undefined”) console.log(“sua mensagem”);
dezembro 15th, 2011 - 15:09
Existe um outro detalhe sobre o console.log() as vezes o tempo de execução dele confunde as outras funções, já tive mais de um caso one uma determinadas funções não executavam na ordem que estava no código, em todas elas retirar o console.log resolveu o problema. Bizarro! Felizmente depois que atualizei para o Firefox 8.0.1 e o Firebug, não tive mais o problema.