Javascript / Chrome: cómo copiar un objeto del inspector de webkit como código

493

Estoy haciendo una declaración console.log en mi javascript para registrar un objeto javascript. Me pregunto si hay una manera, una vez hecho, de copiar ese objeto como código javascript. Lo que estoy tratando de hacer es convertir un objeto que fue creado usando ajax para analizar un feed xml en un objeto JavaScript estático para que un archivo pueda ejecutarse localmente, sin un servidor. Incluí una captura de pantalla del objeto en la ventana del inspector de Chrome para que pueda ver lo que estoy tratando de hacer.ingrese la descripción de la imagen aquí

mheavers
fuente
1
Intente usar firefox y la opción .toSource (). Es más fácil
chepe263

Respuestas:

1250
  1. Haga clic derecho en un objeto en la consola de Chrome y seleccione Store as Global Variableen el menú contextual. Devolverá algo así temp1como el nombre de la variable.

  2. Chrome también tiene un copy()método, por lo que copy(temp1)en la consola debe copiar ese objeto en su portapapeles.

Copiar objeto Javascript en Chrome DevTools

Nota sobre objetos recursivos: si está intentando copiar un objeto recursivo, obtendrá [object Object]. La salida es que copy(JSON.stringify(temp1))el objeto se copiará completamente en su portapapeles como un JSON válido, por lo que podrá formatearlo como desee, utilizando uno de los muchos recursos.

kevnk
fuente
3
volver indefinido en Chrome Versión 49.0.2623.87 (64 bits)? por qué
Pardeep Jain
10
@PardeepJain: eso se espera del método copy () porque no hay nada que devolver. Los datos deben estar en su portapapeles.
Carl
35
Esto solo da [object Object]para mí.
Ullallulloo
1
@Ullallulloo intente cerrar sesión con JSON.stringify de esta manera: stackoverflow.com/a/4293047/622287
kevnk
3
funciona solo si tiene un objeto JS poco profundo, si tiene un objeto recursivo profundo, entonces obtendrá [Objeto Objeto] - eso es lo que se espera
Marwen Trabelsi
62

Tratar JSON.stringify(). Copie la cadena resultante. No funciona con objetos que contienen referencias circulares.

Salman A
fuente
77
No veo cómo funcionaría eso a menos que modifique el código que lo registra.
iConnor
16
ObtengoTypeError: Converting circular structure to JSON
Tony Brasunas
40

Puede copiar un objeto a su portapapeles usando copy (JSON.stringify (Object_Name)); en la consola

Por ejemplo: - Copie y pegue el siguiente código en su consola y presione ENTER. Ahora, intente pegar (CTRL + V para Windows o CMD + V para mac) en otro lugar y obtendrá {"nombre": "Daniel", "edad": 25}

var profile = {
    name: "Daniel",
    age: 25
};

copy(JSON.stringify(profile));
Sudharshan
fuente
14
No funciona con nodos DOM, ventanas o cualquier otro objeto que sea circular
Carles Alcolea
Con mucho, la solución más fácil para un objeto grande pero simple.
Hersheezy
la solución más fácil
Anandhukrishna VR
26

Ahora puede lograr esto en Chrome haciendo clic derecho en el objeto y seleccionando "Almacenar como variable global": http://www.youtube.com/watch?v=qALFiTlVWdg

ingrese la descripción de la imagen aquí

David Calhoun
fuente
2
A partir de la versión 39.0.2171.95, la opción "Almacenar como variable global" no está disponible al inspeccionar dispositivos Android con Chrome.
Walter Roman
1
@David Calhoun, voté por tu respuesta. Parece que su respuesta fue publicada el 12 de junio de 2014 y la aceptada fue el 5 de agosto de 2014, tomando en gran medida exactamente lo que tenía. Tengo que admitir que menciona temp1 donde su respuesta solo se muestra en su video, así que tal vez por eso se aceptó la otra respuesta. Los mejores deseos.
PatS
13

Siga los siguientes pasos:

  1. Imprima el objeto con console.log desde su código, así: console.log (myObject)
  2. Haga clic derecho sobre el objeto y haga clic en "Almacenar como objeto global". Chrome imprimiría el nombre de la variable en este punto. Supongamos que se llama "temp1".
  3. En la consola, escriba: JSON.stringify(temp1).
  4. En este punto, verá todo el objeto JSON como una cadena que puede copiar / pegar.
  5. Puede utilizar herramientas en línea como http://www.jsoneditoronline.org/ para prettificar su cadena en este momento.
sufinawaz
fuente
El paso con JSON.stringify (temp1) podría afectar a una ejecución prolongada si el objeto es grande.
heroína
@JoeTidee Tuve el mismo problema, pero configuré una debuggerdeclaración y luego recuperé mi var directamente desde la consola en el punto de interrupción.
Tony Brasunas
11

Si ha enviado el objeto a través de una solicitud, puede copiarlo desde la pestaña Chrome -> Red.

Solicitar carga útil -> Ver código fuente

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Christopher Marshall
fuente
2
Después de copiar la carga útil analizada, puede formatear json desde jsonformatter.curiousconcept.com .
Muhammad Hassan
0

El uso de "Almacenar como variable global" funciona, pero solo obtiene la instancia final del objeto, y no el momento en que se registra el objeto (ya que es probable que desee comparar los cambios en el objeto a medida que ocurren). Para obtener el objeto en su punto exacto en el tiempo de ser modificado, uso esto ...

function logObject(object) {
    console.info(JSON.stringify(object).replace(/,/g, ",\n"));
}

Llámalo así ...

logObject(puzzle);

Es posible que desee eliminar la expresión regular .replace (/./ g, ", \ n") si sus datos contienen comas.

HoldOffHunger
fuente
0

Entonces,. Tuve este problema. excepto que obtuve [objeto objeto]

Estoy seguro de que podría hacer esto con recurrencia, pero esto funcionó para mí:

Esto es lo que hice en mi consola:

var object_that_is_not_shallow = $("all_obects_with_this_class_name");
var str = '';
object_that_is_not_shallow.map(function(_,e){
    str += $(e).html();
});
copy(str);

Luego pégalo en tu editor.

twalow
fuente
0

Esto debería ayudar a encadenar objetos profundos al omitir objetos recursivos Windowy Node.

function stringifyObject(e) {
  const obj = {};
  for (let k in e) {
    obj[k] = e[k];
  }

  return JSON.stringify(obj, (k, v) => {
    if (v instanceof Node) return 'Node';
    if (v instanceof Window) return 'Window';
    return v;
  }, ' ');
}
dummker
fuente
0

Haga clic derecho en los datos que desea almacenar

  • En primer lugar, haga clic con el botón derecho en los datos que desea almacenar -> seleccione "Almacenar como variable global" Y la nueva variable temporal aparece como se muestra a continuación: (variable temp3): la nueva variable temporal aparece en la consola
  • Comando de segundo uso copiar (temp_variable_name) como imagen: ingrese la descripción de la imagen aquí Después de eso, puede pegar datos en cualquier lugar que desee. espero útil /
Neo_
fuente
0

Agregue esto a su consola y ejecute

copy(JSON.stringify(foo));

Esto copia su JSON al portapapeles

usuario3294854
fuente