Como posso usar o log do console no Internet Explorer?

119

Existe um logger de console para o IE? Estou tentando registrar um monte de testes / asserções no console, mas não posso fazer isso no IE.

ground5hark
fonte
8
cuidado! console.log()só funciona quando a ferramenta de desenvolvimento do IE está aberta (sim, o IE é ruim). veja stackoverflow.com/questions/7742781/…
Adrien Seja
1
use o invólucro em vários navegadores: github.com/MichaelZelensky/log.js
Michael Zelensky

Respostas:

147

Você pode acessar o console de scripts do IE8 iniciando as "Ferramentas do desenvolvedor" (F12). Clique na guia "Script" e clique em "Console" à direita.

No código JavaScript, você pode executar um dos seguintes procedimentos:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Além disso, você pode limpar o console chamando console.clear().

NOTA: Parece que você deve iniciar as Ferramentas do desenvolvedor primeiro e depois atualizar sua página para que isso funcione.

Craig
fonte
Isso é apenas para o IE8 +, mas é um console muito bom. É basicamente uma réplica do Firebug, faltando alguns recursos com outros lançados. Pesquise no MSDN.
Ken
2
Ah, mesmo que esteja aquém do Firebug, ele ainda tem o suficiente do que eu preciso. Obrigado!
ground5hark
1
Link para MSDN
Casebash
73
Observe que no IE, diferentemente do Firefox, se as ferramentas do desenvolvedor não estiverem ativas, o window.console é indefinido e a chamada console.log()será interrompida. Sempre proteja suas chamadas comwindow.console && console.log('stuff');
Guss
1
Caso alguém ainda não consiga encontrá-lo, não faça o que fiz e tente digitar seu script na parte superior da janela: a área de entrada é na verdade uma área / barra de texto na parte inferior da janela do Developer Tools Console .
Starmandeluxe
24

Desde a versão 8, o Internet Explorer possui seu próprio console, como outros navegadores. No entanto, se o console não estiver ativado, o consoleobjeto não existe e uma chamada para console.loggerará um erro.

Outra opção é usar o log4javascript (divulgação completa: escrita por mim), que possui seu próprio console de registro que funciona em todos os navegadores convencionais, incluindo o IE> = 5, além de um invólucro para o próprio console do navegador que evita a emissão de um indefinido console.

Tim Down
fonte
Hah .. Alguns meses eu escrevi algo parecido. Bom trabalho nisso!
tftd
@ Tim para baixo há uma solução para isso stackoverflow.com/a/13817235/3057246
Vinod Srivastav
14

Extremamente importante se estiver usando console.log () na produção:

se você acabar liberando console.log()comandos para a produção, precisará inserir algum tipo de correção para o IE - porque isso consoleé definido apenas no F12modo de depuração.

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[obviamente remova o alerta (msg); declaração depois de verificar que funciona]

Consulte também 'console' é um erro indefinido para o Internet Explorer para outras soluções e mais detalhes

Simon_Weaver
fonte
9

Existe o Firebug Lite, que oferece muitas funcionalidades do Firebug no IE.

Daniel DiPaolo
fonte
5

Calço simples do IE7 e inferior que preserva a numeração de linha para outros navegadores:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());
dbrin
fonte
3

Em seu livro "Segredos do Javascript Ninja", John Resig (criador do jQuery) possui um código muito simples que trata dos problemas do console.log em vários navegadores. Ele explica que gostaria de ter uma mensagem de log que funcione com todos os navegadores e aqui está como ele a codificou:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}
ambodi
fonte
É John Resig; você escreveu "Demitir", lol
rvighne 15/02
1
Há uma }falta nesse snippet. :)
Próximo dia
2

Para suporte ao IE8 ou console limitado ao console.log (sem depuração, rastreamento, ...), você pode fazer o seguinte:

  • Se console OU console.log indefinido: Crie funções fictícias para funções do console (rastreio, depuração, log, ...)

    window.console = { debug : function() {}, ...};

  • Caso contrário, se console.log estiver definido (IE8) E console.debug (qualquer outro) não estiver definido: redirecione todas as funções de log para console.log, isso permitirá manter esses logs!

    window.console = { debug : window.console.log, ...};

Não tenho certeza sobre o suporte de declaração em várias versões do IE, mas todas as sugestões são bem-vindas.

Christophe Roussy
fonte
0

Para a versão mais antiga do IE (antes do IE8), não é fácil ver o console fazer login na Barra de Ferramentas do Desenvolvedor do IE, depois de passar horas pesquisando e tentando muitas soluções diferentes, finalmente, a barra de ferramentas a seguir é uma ótima ferramenta para mim:

A principal vantagem disso é fornecer um console para o IE6 ou IE7, para que você possa ver qual é o erro (no log do console)

  • Nota:
  • É de graça
  • captura de tela da barra de ferramentas

insira a descrição da imagem aqui

super1ha1
fonte
0

Eu sempre fiz algo assim:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

e a partir desse ponto, sempre use log (...), não seja muito estiloso usando o console. [warn | error | e assim por diante], apenas mantenha-o simples. Normalmente, prefiro uma solução simples do que bibliotecas externas sofisticadas, geralmente compensa.

maneira simples de evitar problemas com o IE (com console.log inexistente)

stopsopa
fonte