Javascript / Chrome - Come copiare un oggetto dall'ispettore webkit come codice


493

Sto facendo un'istruzione console.log nel mio javascript per registrare un oggetto javascript. Mi chiedo se c'è un modo, una volta fatto, di copiare quell'oggetto come codice javascript. Quello che sto cercando di fare è convertire un oggetto creato usando Ajax per analizzare un feed XML in un oggetto JavaScript statico in modo che un file possa essere eseguito localmente, senza un server. Ho incluso uno screenshot dell'oggetto nella finestra di ispezione di Chrome in modo da poter vedere cosa sto cercando di fare.inserisci qui la descrizione dell'immagine


1
Prova a utilizzare Firefox e l'opzione .toSource (). È più facile
chepe263

Risposte:


1250
  1. Fai clic con il pulsante destro del mouse su un oggetto nella console di Chrome e seleziona Store as Global Variabledal menu di scelta rapida. Restituirà qualcosa come temp1il nome della variabile.

  2. Chrome ha anche un copy()metodo, quindi copy(temp1)nella console dovrebbe copiare quell'oggetto negli appunti.

Copia l'oggetto Javascript in Chrome DevTools

Nota sugli oggetti ricorsivi: se stai cercando di copiare un oggetto ricorsivo, otterrai [object Object]. La via d'uscita è che copy(JSON.stringify(temp1))l'oggetto verrà completamente copiato negli Appunti come un JSON valido, quindi sarai in grado di formattarlo come desideri, usando una delle tante risorse.


3
restituire undefined in chrome Versione 49.0.2623.87 (64-bit)? perché>?
Pardeep Jain,

10
@PardeepJain: è previsto dal metodo copy () perché non c'è nulla da restituire. I dati dovrebbero essere negli appunti.
Carl,

35
Questo [object Object]mi dà solo .
Ullallulloo,

1
@Ullallulloo prova ad accedere con JSON.stringify in questo modo: stackoverflow.com/a/4293047/622287
kevnk

3
funziona solo se hai un oggetto JS superficiale, se hai un oggetto profondo ricorsivo, otterrai [Oggetto Oggetto] - che è previsto
Marwen Trabelsi,

62

Prova JSON.stringify(). Copia la stringa risultante. Non funziona con oggetti contenenti riferimenti circolari.


7
Non vedo come funzionerebbe se non modificassi il codice che lo registra.
iConnor

16
RicevoTypeError: Converting circular structure to JSON
Tony Brasunas il

40

Puoi copiare un oggetto nella tua clipboard usando copy (JSON.stringify (Object_Name)); nella console.

Ad esempio: - Copia e incolla il codice seguente nella tua console e premi INVIO. Ora, prova a incollarlo (CTRL + V per Windows o CMD + V per mac) altrove e otterrai {"name": "Daniel", "age": 25}

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

copy(JSON.stringify(profile));

14
Non funziona con nodi DOM, finestre o altri oggetti circolari
Carles Alcolea

Di gran lunga la soluzione più semplice per un oggetto grande ma semplice.
Hersheezy,

soluzione più semplice
Anandhukrishna VR,

26

Ora puoi farlo in Chrome facendo clic destro sull'oggetto e selezionando "Store as Global Variable": http://www.youtube.com/watch?v=qALFiTlVWdg

inserisci qui la descrizione dell'immagine


2
A partire dalla versione 39.0.2171.95, l'opzione "Memorizza come variabile globale" non è disponibile durante l'ispezione dei dispositivi Android con Chrome.
Walter Roman,

1
@ David Calhoun, ho votato per la tua risposta. Sembra che la tua risposta sia stata pubblicata il 12 giugno 2014 e quella accettata è stata il 5 agosto 2014, prendendo in gran parte esattamente quello che avevi. Devo ammettere che menziona temp1 dove la tua risposta lo mostra solo nel tuo video, quindi forse è per questo che l'altra risposta è stata accettata. Auguri.
PatS,

13

Segui i seguenti passi:

  1. Output dell'oggetto con console.log dal tuo codice, in questo modo: console.log (myObject)
  2. Fare clic destro sull'oggetto e fare clic su "Store as Global Object". Chrome stamperebbe il nome della variabile a questo punto. Supponiamo che si chiami "temp1".
  3. Nella console, digitare: JSON.stringify(temp1).
  4. A questo punto vedrai l'intero oggetto JSON come una stringa che puoi copiare / incollare.
  5. A questo punto puoi utilizzare strumenti online come http://www.jsoneditoronline.org/ per preimpostare la tua stringa.

Il passaggio con JSON.stringify (temp1) potrebbe influire su un'esecuzione prolungata se l'oggetto è grande.
eroina,

@JoeTidee Ho avuto lo stesso problema, ma ho impostato una debuggerdichiarazione e poi ho recuperato il mio var direttamente dalla console al punto di interruzione.
Tony Brasunas,


0

L'uso di "Store as a Global Variable" funziona, ma ottiene solo l'istanza finale dell'oggetto e non il momento in cui l'oggetto viene registrato (poiché probabilmente vorrai confrontare le modifiche all'oggetto man mano che si verificano). Per ottenere l'oggetto nel punto esatto in cui è stato modificato, utilizzo questo ...

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

Chiamalo così ...

logObject(puzzle);

Potresti voler rimuovere la regex .replace (/./ g, ", \ n") se i tuoi dati contengono virgole.


0

Così,. Ho avuto questo problema. tranne che ho [oggetto oggetto]

Sono sicuro che potresti farlo con la ricorsione, ma questo ha funzionato per me:

Ecco cosa ho fatto nella mia console:

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

Quindi incollalo nel tuo editor.


0

Ciò dovrebbe aiutare a stringere oggetti profondi tralasciando oggetti ricorsivi Windowe 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;
  }, ' ');
}

0

Fare clic con il tasto destro del mouse sui dati che si desidera archiviare


0

Aggiungi questo alla tua console ed eseguilo

copy(JSON.stringify(foo));

Questo copia il tuo JSON negli appunti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.