Renan Fernandes Linux, Technology, Programming and Free Software.

23jun/103

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% [?]

Sobre ShadowBelmolve

Arch Linux user and Ruby on Rails Developer :)
Comentários (3) Trackbacks (0)
  1. Chrome 11.0.696.68 Windows 7

    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);
    }

  2. Chrome 15.0.874.106 Windows XP

    A forma que é utilizada no JQuery:

    if(typeof console != “undefined”) console.log(“sua mensagem”);

  3. Chrome 15.0.874.121 Windows 7

    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.


Deixar um comentário


Sem trackbacks