Come posso utilizzare la registrazione della console in Internet Explorer?


119

Esiste un logger della console per IE? Sto cercando di registrare un sacco di test / asserzioni sulla console ma non posso farlo in IE.


8
attento! console.log()funziona solo quando lo strumento di sviluppo di IE è aperto (sì, IE è schifoso). vedi stackoverflow.com/questions/7742781/…
Adrien Be

1
usa il wrapper cross-browser: github.com/MichaelZelensky/log.js
Michael Zelensky

Risposte:


147

È possibile accedere alla console di script di IE8 avviando gli "Strumenti per sviluppatori" (F12). Fare clic sulla scheda "Script", quindi su "Console" a destra.

Dall'interno del codice JavaScript, puoi eseguire una delle seguenti operazioni:

<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>

Inoltre, puoi cancellare la console chiamando console.clear().

NOTA: sembra che sia necessario prima avviare gli Strumenti per sviluppatori, quindi aggiornare la pagina affinché funzioni.


Questo è solo per IE8 +, ma è una console dannatamente bella. È fondamentalmente una replica di Firebug, mancante di alcune funzionalità con altre lanciate. Cerca in MSDN.
ken

2
Ah, anche se non è all'altezza di Firebug, ha ancora quanto basta di ciò di cui ho bisogno. Grazie!
ground5hark

1
Collegamento a MSDN
Casebash

73
Si noti che in IE, a differenza di Firefox, se gli strumenti di sviluppo non sono attivi, window.console non è definito e la chiamata console.log()si interromperà. Proteggi sempre le tue chiamate conwindow.console && console.log('stuff');
Guss

1
Nel caso in cui qualcuno non riesca ancora a trovarlo, non fare quello che ho fatto e prova a digitare il tuo script nella parte superiore della finestra: l'area di input è in realtà un'area / barra di testo nella parte inferiore della finestra della Console degli strumenti per sviluppatori .
starmandeluxe

24

Dalla versione 8, Internet Explorer ha una propria console, come altri browser. Tuttavia, se la console non è abilitata, l' consoleoggetto non esiste e una chiamata a console.loggenererà un errore.

Un'altra opzione è usare log4javascript (full disclosure: scritto da me), che ha una propria console di registrazione che funziona in tutti i browser tradizionali, incluso IE> = 5, più un wrapper per la console del browser che evita il problema di un file undefined console.


Hah .. Un paio di mesi ho scritto qualcosa di simile. Ottimo lavoro!
tftd

@Tim Down c'è una soluzione alternativa per esso stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Estremamente importante se si utilizza console.log () in produzione:

se si finisce per rilasciare console.log()comandi in produzione, è necessario inserire una sorta di correzione per IE, perché consoleè definita solo in F12modalità di debug.

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

[ovviamente rimuovere l'avviso (msg); dichiarazione una volta verificato che funzioni]

Vedi anche "console" è un errore indefinito per Internet Explorer per altre soluzioni e maggiori dettagli



5

Semplice IE7 e shim inferiore che preserva la numerazione delle righe per altri browser:

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

3

Nel suo libro "Secrets of Javascript Ninja", John Resig (creatore di jQuery) ha un codice molto semplice che gestirà i problemi di console.log cross-browser. Spiega che vorrebbe avere un messaggio di log che funzioni con tutti i browser ed ecco come lo ha codificato:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

È John Resig; hai scritto "Resign", LOL
rvighne

1
Manca uno }snippet. :)
Quasi il

2

Per IE8 o il supporto della console limitato a console.log (nessun debug, traccia, ...) puoi fare quanto segue:

  • Se console OR console.log undefined: crea funzioni fittizie per le funzioni della console (traccia, debug, log, ...)

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

  • Altrimenti se console.log è definito (IE8) E console.debug (qualsiasi altro) non è definito: reindirizza tutte le funzioni di logging a console.log, questo permette di mantenere quei log!

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

Non sono sicuro del supporto dell'asserzione in varie versioni di IE, ma qualsiasi suggerimento è benvenuto.



0

Per la versione precedente di IE (prima di IE8), non è semplice vedere il registro della console in IE Developer Toolbar, dopo aver trascorso ore a cercare e provare molte soluzioni diverse, infine, la seguente barra degli strumenti è un ottimo strumento per me:

Il vantaggio principale di questo è fornire una console per IE6 o IE7, in modo da poter vedere quali sono gli errori (nel registro della console)

  • Nota:
  • È gratis
  • schermata della barra degli strumenti

inserisci qui la descrizione dell'immagine


0

Ho sempre fatto qualcosa del genere:

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

e da quel punto usa sempre log (...), non essere troppo stravagante usando la console. [warn | error | e così via], mantienilo semplice. Di solito preferisco una soluzione semplice piuttosto che fantasiose librerie esterne, di solito paga.

modo semplice per evitare problemi con IE (con console.log non esistente)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.