70

Tengo un objeto que necesito examinar en IE8. Probé las herramientas de desarrollador y console.log, su equivalente Firebug. Sin embargo, cuando la salida que el objeto en el registro:¿Cómo descargo JavaScript vars en IE8?

console.log("Element: ", element); 
console.log(element); 

solo me dan la cadena

LOG: Element: [object Object] 

en lugar de un clic, volcado evaluable.

¿Es posible volcar un objeto en el registro y examinar sus miembros, como en Firebug?

No puedo usar una función casera dump() porque el elemento que quiero examinar es tan grande que el navegador se bloqueará en mí.

+12

Lamentablemente IE9 hace lo mismo. Te maldice Microsoft! – Walf

Respuesta

101

Aquí está una técnica que he encontrado útil:

  • Abra la barra de herramientas para desarrolladores (golpe F12)
  • Ir a la pestaña de "escritura"
  • Haga clic en el botón "Iniciar depuración"
  • a continuación, escriba "depurador" en la consola y pulsa enter. Esto debería desencadenar un punto de quiebre.
  • Vaya a la subpestaña "Ver"
  • Haga clic en la fila que dice, "Haga clic para agregar ..." e introduzca una variable que desee examinar. Tenga en cuenta que la variable debe estar disponible globalmente.
  • En este punto, usted debe ser capaz de examinar la variable de interfaz de usuario con forma de árbol
  • Una vez que haya terminado la depuración, haga clic en el botón Continuar (o presione F5)
+1

No tengo tiempo para entrar en esto ahora, pero estoy bastante seguro de que me va a ayudar. Gracias por las instrucciones paso a paso. –

+41

Al leer esto siento que estoy buscando un código de trampa en GameFAQ ... –

+16

Apuesto a que los desarrolladores de Microsoft odian esto. – alejandro

-1

console.log (element.toString()) podría ser su amigo aquí ...

+0

Buena idea, pero lamentablemente, la misma salida ... –

+0

no, esto definitivamente no debería funcionar –

+4

No creo que esto merezca un voto negativo - funciona perfectamente bien, simplemente no de la manera que necesito. Los votos atrasados ​​deben reservarse para las respuestas descartadas * incorrectas *. +1 para emparejarlo. –

92

Un poco fuera de tema (ya que ganó no funciona para los elementos DOM) pero he encontrado que es útil usar el JSON.stringify(object para obtener una cadena JSON para el objeto que es bastante legible.

+4

Esta solución es una mejor respuesta a la pregunta. Por cierto, si su IE no es compatible con el objeto JSON, puede utilizar http://www.JSON.org/json2.js, que es una buena alternativa – daitangio

+0

solo para tener en cuenta, si intenta utilizar esta técnica para variables muy grandes como los objetos jquery, por ejemplo, es probable que encuentre "Error: falta de memoria". –

+51

** PROTIP **: Use 'JSON.stringify (obj, null," \ t ")' para hacer que el resultado de 'stringify' sea más legible. – Xavi

3

Una sugerencia es usar Firebug-Lite: Envuelve obj de consola y puede ver el resultado en IE como en la mayoría de la consola de Firebug. Espero que esta ayuda.

+0

1) cómo instalar y usar firebug-lite en IE y otros navegadores: http://www.makeuseof.com/tag/install-firebug -for-browsers-other-than-firefox 2) video sobre cómo eludir el problema de marcadores para bookmarklet firebug-lite en IE: http://www.youtube.com/watch?v = vLJ2RaNZ22E – GuruM

+0

firebug-lite instalado, pero 'console is undefined' es el mensaje de error que recibo. Intenté buscar respuestas en Google pero todavía no tuve suerte. Si alguien sabe cómo deshacerse de este problema, responda aquí. – GuruM

5

Si usted está tratando con código desagradable y console.log no está disponible, intente esto en la consola:

out = []; for (i in your_object) { out.push(i) } out.join("\n") 
13

@ Chris comentó @ respuesta de Andy con la solución simple: Uso console.dir(myObj) para obtener toda la detalles impresos en la consola en IE. Gracias Chris!

+0

Sí está bien ^^ Tan estúpido que no publiqué una respuesta. Pensé que había suficientes buenos aquí. – Chris

+12

console.dir no está disponible en IE8 :( – erotte

+2

También ... console.dir no hace una serialización profunda ... JSON.stringify hace –

0

Sé que esta es una pregunta REALMENTE vieja, pero estaba buscando una respuesta a esto ahora. Si no es un requisito absoluto utilizar la consola IE (que no es muy buena, IMO), entonces podría considerar usar Firebug Lite (http://getfirebug.com/firebuglite). No es una solución perfecta, y es posible que no desee enviar esa secuencia de comandos a su entorno de producción, y no está tan completa como Firebug, pero es bastante buena en un aprieto cuando tiene que buscar mucho con un navegador de gama baja como ES DECIR.

+3

si no se requiere IE, entonces no habría problemas. Las herramientas de desarrollo incorporadas de Chrome/Firefox lo hacen bien. – Joe

0

Un poco grueso pero funciona para objetos DOM:

console.log(testNode.outerHTML.replace(testNode.innerHTML,"")); 
1

Añadir esta etiqueta en su página:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

Y las cosas van a trabajar.

Está trabajando en mi sistema.

Nota: Pruebe esta solución.

0

volcado en una ya existente HMTL-Elemento

Noté IE 11 es el paso de las líneas de consola después de 1027 caracteres: -/ Cuando tenía un objeto grande para volcar (12.000 caracteres) Me deshice en un DIV- oder TextArea-Element existente, desde donde pude copiar el contenido.

var str = JSON.stringify(myObject); 
$('#existing-element').text(str); // jQuery or 
document.querySelector("#existing-element").innerHTML = str; // native JavaScript 
1

Una versión pictórica de una excelente respuesta de Xavi:

enter image description here