Esiste un logger della console per IE? Sto cercando di registrare un sacco di test / asserzioni sulla console ma non posso farlo in IE.
Esiste un logger della console per IE? Sto cercando di registrare un sacco di test / asserzioni sulla console ma non posso farlo in IE.
Risposte:
È 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.
console.log()
si interromperà. Proteggi sempre le tue chiamate conwindow.console && console.log('stuff');
Dalla versione 8, Internet Explorer ha una propria console, come altri browser. Tuttavia, se la console non è abilitata, l' console
oggetto non esiste e una chiamata a console.log
genererà 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
.
se si finisce per rilasciare console.log()
comandi in produzione, è necessario inserire una sorta di correzione per IE, perché console
è definita solo in F12
modalità 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
C'è Firebug Lite che offre molte funzionalità Firebug in IE.
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, " "));
}
}
}
snippet. :)
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.
Puoi utilizzare il wrapper cross-browser: https://github.com/MichaelZelensky/log.js
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)
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)
console.log()
funziona solo quando lo strumento di sviluppo di IE è aperto (sì, IE è schifoso). vedi stackoverflow.com/questions/7742781/…