Según esta publicación , estaba en la versión beta, pero no está en el lanzamiento.
javascript
logging
internet-explorer-8
console
leeand00
fuente
fuente
console.log
está ahí en IE8, pero elconsole
objeto no se crea hasta que abra DevTools. Por lo tanto, una llamada aconsole.log
puede provocar un error, por ejemplo, si ocurre en la carga de la página antes de que tenga la oportunidad de abrir las herramientas de desarrollo. La respuesta ganadora aquí lo explica con más detalle.Respuestas:
Aún mejor para el retroceso es este:
fuente
console.log solo está disponible después de haber abierto las Herramientas para desarrolladores (F12 para alternar entre abrir y cerrar). Lo curioso es que después de abrirlo, puede cerrarlo y luego publicarlo a través de las llamadas de console.log, y eso se verá cuando lo vuelva a abrir. Estoy pensando que es un tipo de error, y puede ser solucionado, pero ya veremos.
Probablemente usaré algo como esto:
e incluso más simple:
fuente
alert
es malvado Algunos códigos se comportan de manera diferente cuando se usan alertas porque el documento pierde el foco, lo que hace que los errores sean aún más difíciles de diagnosticar o crea otros donde no los había antes. Además, si accidentalmente deja unconsole.log
en su código de producción, es benigno (suponiendo que no explote), solo inicia sesión silenciosamente en la consola. Si accidentalmente deja unalert
en su código de producción, la experiencia del usuario se arruina.Esta es mi opinión sobre las diversas respuestas. En realidad, quería ver los mensajes registrados, incluso si no tenía la consola IE abierta cuando fueron disparados, así que los inserto en una
console.messages
matriz que creo. También agregué una funciónconsole.dump()
para facilitar la visualización de todo el registro.console.clear()
vaciará la cola de mensajes.Esta solución también "maneja" los otros métodos de la consola (que creo que todos se originan en la API de la consola Firebug )
Finalmente, esta solución tiene la forma de un IIFE , por lo que no contamina el alcance global. El argumento de la función alternativa se define en la parte inferior del código.
Simplemente lo dejo en mi archivo JS maestro que se incluye en cada página, y me olvido de eso.
Alguna información extra
La línea
var args = Array.prototype.slice.call(arguments);
crea una matriz a partir delarguments
objeto. Esto es necesario porque los argumentos no son realmente una matriz .trap()
es un controlador predeterminado para cualquiera de las funciones de la API. Paso los argumentos amessage
para que obtenga un registro de los argumentos que se pasaron a cualquier llamada API (no soloconsole.log
).Editar
Agregué una matriz adicional
console.raw
que captura los argumentos exactamente como se les pasótrap()
. Me di cuenta de queargs.join(' ')
estaba convirtiendo objetos en la cadena"[object Object]"
que a veces puede ser indeseable. Gracias bfontaine por la sugerencia .fuente
trap
funciónvar args = Array.prototype.slice.call(arguments); var message = args.join(' ');
:? ¿Por qué pasas los argumentos a través de esto al mensaje?Vale la pena señalar que
console.log
en IE8 no es una verdadera función de Javascript. No es compatible con los métodosapply
ocall
.fuente
console.log=Function.prototype.bind.call(console.log,console);
para evitar esto.bind
.Suponiendo que no le importa una alternativa para alertar, esta es una forma aún más concisa de solucionar las deficiencias de Internet Explorer:
fuente
Me gusta mucho el enfoque publicado por "orange80". Es elegante porque puedes configurarlo una vez y olvidarlo.
Los otros enfoques requieren que hagas algo diferente (llamar a algo diferente de lo normal
console.log()
cada vez), lo cual es solo pedir problemas ... Sé que eventualmente lo olvidaré.He ido un paso más allá, envolviendo el código en una función de utilidad a la que puede llamar una vez al comienzo de su javascript, en cualquier lugar, siempre que sea antes de cualquier registro. (Estoy instalando esto en el producto de enrutador de datos de eventos de mi empresa. Ayudará a simplificar el diseño entre navegadores de su nueva interfaz de administración).
fuente
/**/console.log("...");
por lo que es fácil buscar y localizar el código temporal.Si obtiene "indefinido" a todas sus llamadas de console.log, eso probablemente significa que todavía tiene una vieja firebuglite cargada (firebug.js). Anulará todas las funciones válidas de console.log de IE8 aunque existan. Esto es lo que me pasó de todos modos.
Busque otro código que anule el objeto de la consola.
fuente
La mejor solución para cualquier navegador que carece de consola es:
fuente
Hay tantas respuestas Mi solución para esto fue:
En resumen, si console.log no existe (o en este caso, no está abierto), almacene el registro en una matriz de espacio de nombres global. De esta manera, no te molestan millones de alertas y aún puedes ver tus registros con la consola de desarrollador abierta o cerrada.
fuente
fuente
window.console.log()
podría estar disponible en IE8 incluso cuandoconsole.log()
no lo está?typeof window.console.log === "object"
, no"function"
Aquí está mi "IE, por favor no se cuelgue"
fuente
Encontré esto en github :
fuente
Estoy usando el enfoque de Walter desde arriba (ver: https://stackoverflow.com/a/14246240/3076102 )
Mezclo una solución que encontré aquí https://stackoverflow.com/a/7967670 para mostrar correctamente los objetos.
Esto significa que la función de trampa se convierte en:
Espero que esto sea útil:-)
fuente
Funciona en IE8. Abra las Herramientas de desarrollo de IE8 presionando F12.
fuente
Me gusta este método (usando jquery's doc ready) ... te permite usar la consola incluso en ie ... solo captura es que necesitas volver a cargar la página si abres las herramientas de desarrollo de ie después de que se carga la página ...
podría ser más sofisticado teniendo en cuenta todas las funciones, pero solo uso log, así que esto es lo que hago.
fuente
Aquí hay una versión que se registrará en la consola cuando las herramientas de desarrollador estén abiertas y no cuando estén cerradas.
fuente
apply
método.Haga su propia consola en html .... ;-) Esto puede imprimirse pero puede comenzar con:
fuente