¿Cómo puedo utilizar el inicio de sesión de la consola en Internet Explorer?


119

¿Existe un registrador de consola para IE? Estoy tratando de registrar un montón de pruebas / afirmaciones en la consola, pero no puedo hacer esto en IE.


8
¡Cuidado! console.log()solo funciona cuando la herramienta de desarrollo de IE está abierta (sí, IE es una mierda). ver stackoverflow.com/questions/7742781/…
Adrien Be

1
use el contenedor de varios
Michael Zelensky

Respuestas:


147

Puede acceder a la consola de secuencias de comandos de IE8 iniciando las "Herramientas de desarrollo" (F12). Haga clic en la pestaña "Script", luego haga clic en "Consola" a la derecha.

Desde su código JavaScript, puede realizar cualquiera de las siguientes acciones:

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

Además, puede borrar la consola llamando console.clear().

NOTA: Parece que primero debe iniciar las herramientas de desarrollo y luego actualizar su página para que esto funcione.


Esto es solo para IE8 +, pero es una excelente consola. Básicamente es una réplica de Firebug, a la que le faltan algunas características y otras incorporadas. Busque en MSDN.
ken

2
Ah, a pesar de que no llega a Firebug, todavía tiene lo suficiente de lo que necesito. ¡Gracias!
Ground5hark

1
Enlace a MSDN
Casebash

73
Tenga en cuenta que en IE, a diferencia de Firefox, si las herramientas de desarrollo no están activas, window.console no está definido y la llamada console.log()se interrumpirá. Siempre proteja sus llamadas conwindow.console && console.log('stuff');
Guss

1
En caso de que alguien aún no pueda encontrarlo, no haga lo que hice e intente escribir su secuencia de comandos en la parte superior de la ventana: el área de entrada es en realidad un área / barra de texto en la parte inferior de la ventana de la Consola de herramientas del desarrollador .
starmandeluxe

24

Desde la versión 8, Internet Explorer tiene su propia consola, al igual que otros navegadores. Sin embargo, si la consola no está habilitada, el consoleobjeto no existe y una llamada a console.logarrojará un error.

Otra opción es usar log4javascript (divulgación completa: escrito por mí), que tiene su propia consola de registro que funciona en todos los navegadores principales, incluido IE> = 5, además de un contenedor para la propia consola del navegador que evita el problema de indefinido console.


Hah .. Hace un par de meses escribí algo parecido. ¡Buen trabajo en eso!
tftd

@Tim Down hay una solución para esto stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Extremadamente importante si usa console.log () en producción:

Si termina lanzando console.log()comandos a producción, debe realizar algún tipo de corrección para IE, porque consolesolo se define cuando está en F12modo de depuración.

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

[obviamente elimine la alerta (msg); declaración una vez que haya verificado que funciona]

Consulte también 'consola' es un error indefinido para Internet Explorer para otras soluciones y más detalles



5

Calce simple de IE7 e inferior que conserva la numeración de líneas para otros navegadores:

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

3

En su libro, "Secrets of Javascript Ninja", John Resig (creador de jQuery) tiene un código realmente simple que manejará los problemas de console.log entre navegadores. Explica que le gustaría tener un mensaje de registro que funcione con todos los navegadores y así es como lo codificó:

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

Es John Resig; escribiste "Renunciar", LOL
rvighne

1
Hay una }falta en ese fragmento. :)
Cerca del

2

Para IE8 o soporte de consola limitado a console.log (sin depuración, rastreo, ...) puedes hacer lo siguiente:

  • Si console O console.log no está definido: crea funciones ficticias para las funciones de la consola (rastreo, depuración, registro, ...)

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

  • De lo contrario, si console.log está definido (IE8) Y console.debug (cualquier otro) no está definido: redirige todas las funciones de registro a console.log, ¡esto permite mantener esos registros!

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

No estoy seguro sobre el soporte de assert en varias versiones de IE, pero cualquier sugerencia es bienvenida.



0

Para la versión anterior de IE (antes de IE8), no es sencillo ver el registro de la consola en la barra de herramientas del desarrollador de IE, después de pasar horas investigando y probando muchas soluciones diferentes, finalmente, la siguiente barra de herramientas es una gran herramienta para mí:

La principal ventaja de esto es proporcionar una consola para IE6 o IE7, por lo que puede ver cuál es el error (en el registro de la consola)

  • Nota:
  • Es gratis
  • captura de pantalla de la barra de herramientas

ingrese la descripción de la imagen aquí


0

Siempre he estado haciendo algo como esto:

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

y desde ese punto, use siempre log (...), no sea demasiado sofisticado usando la consola. [advertencia | error | y así sucesivamente], simplemente manténgalo simple. Por lo general, prefiero una solución simple que las bibliotecas externas elegantes, generalmente vale la pena.

forma sencilla de evitar problemas con IE (con console.log no existente)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.