Bug interessante encontrado rastejando no console (ie8 no XP)

A empresa para a qual trabalho apóia a ie8 para muitos de seus clientes, e eu faço um bom trabalho de front-end para eles.

Encontrei um bug interessante outro dia que me intrigou por horas. Estava ocorrendo apenas no ie8 no Windows XP. Algum código estava impedindo o js de anexar uma coleção de backbone e a reprodução de vídeos (video.js), bem como todas as interações da IU.

O aplicativo depende muito da análise de feeds JSON e de sua divulgação por meio de um canudo backbone.js-y, então pensei em começar por aí. Abri meu VirtualBox VM e as ferramentas Dev – foi consertado. Eu fui para outra máquina e abri a pilha de navegadores para ver nenhuma mudança em todo o JS estava quebrado.

Continue esse padrão por algumas horas. Entre arrancar meu cabelo e preencher meu código com todos os hack ie8 possíveis (de análise JSON para análise de objeto adiado), me deparei com esta postagem:

http://stackoverflow.com/questions/3326650/console-is-undefined-error-for-internet-explorer .

Então, para encurtar a história. Em ie8 no XP, não há objeto window.console até que as ferramentas de desenvolvimento sejam abertas – então, se você tiver um console.log em seu código em algum lugar, ele irá apresentar um erro (mas você não pode ver isso) e quando você abrir o Dev ferramentas o js será corrigido novamente.

Você pode colocar uma verificação em seu código, como

if (window.console){console.log('this could get annoying');}

mas parece ser muito trabalhoso para o benefício de uma mensagem console.log. Pode fazer sentido retirar o console.log de tudo de qualquer maneira.

Talvez isso poupe alguém de algumas horas girando em círculos.