Javascript / Chrome - Comment copier un objet depuis l'inspecteur du kit web en tant que code


493

Je fais une instruction console.log dans mon javascript pour enregistrer un objet javascript. Je me demande s'il existe un moyen, une fois cela fait - de copier cet objet en tant que code javascript. Ce que j'essaie de faire est de convertir un objet créé en utilisant ajax pour analyser un flux xml en un objet javascript statique afin qu'un fichier puisse s'exécuter localement, sans serveur. J'ai inclus une capture d'écran de l'objet dans la fenêtre de l'inspecteur Chrome pour que vous puissiez voir ce que j'essaie de faire.entrez la description de l'image ici


1
Essayez d'utiliser Firefox et l'option .toSource (). C'est plus facile
chepe263

Réponses:


1250
  1. Cliquez avec le bouton droit sur un objet dans la console de Chrome et sélectionnez-le Store as Global Variabledans le menu contextuel. Il renverra quelque chose comme le temp1nom de la variable.

  2. Chrome a également une copy()méthode, donc copy(temp1)dans la console devrait copier cet objet dans votre presse-papiers.

Copier un objet Javascript dans Chrome DevTools

Remarque sur les objets récursifs: si vous essayez de copier un objet récursif, vous obtiendrez [object Object]. La sortie est de copy(JSON.stringify(temp1)), l'objet sera entièrement copié dans votre presse-papiers en tant que JSON valide, vous pourrez donc le formater comme vous le souhaitez, en utilisant l'une des nombreuses ressources.


3
retourner indéfini dans la version chrome 49.0.2623.87 (64 bits)? pourquoi>?
Pardeep Jain

10
@PardeepJain - qui est attendu de la méthode copy () car il n'y a rien à retourner. Les données doivent être dans votre presse-papiers.
Carl

35
Cela me donne juste [object Object].
Ullallulloo

1
@Ullallulloo essayez de vous déconnecter avec JSON.stringify comme ceci: stackoverflow.com/a/4293047/622287
kevnk

3
cela ne fonctionne que si vous avez un objet JS peu profond, si vous avez un objet profond récursif, vous obtiendrez [Object Object] - ce qui est attendu
Marwen Trabelsi

62

Essayez JSON.stringify(). Copiez la chaîne résultante. Ne fonctionne pas avec les objets contenant des références circulaires.


7
Je ne vois pas comment cela fonctionnerait, sauf si vous modifiez le code qui le consigne.
iConnor

16
Je reçoisTypeError: Converting circular structure to JSON
Tony Brasunas

40

Vous pouvez copier un objet dans votre presse-papiers à l' aide de copy (JSON.stringify (Object_Name)); dans la console.

Par exemple: - Copiez et collez le code ci-dessous dans votre console et appuyez sur ENTRÉE. Maintenant, essayez de le coller (CTRL + V pour Windows ou CMD + V pour mac) ailleurs et vous obtiendrez {"name": "Daniel", "age": 25}

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

copy(JSON.stringify(profile));

14
Ne fonctionne pas avec les nœuds DOM, la fenêtre ou tout autre objet circulaire
Carles Alcolea

De loin la solution la plus simple pour un objet grand mais simple.
Hersheezy

solution la plus simple
Anandhukrishna VR

26

Vous pouvez maintenant accomplir cela dans Chrome en cliquant avec le bouton droit sur l'objet et en sélectionnant "Stocker comme variable globale": http://www.youtube.com/watch?v=qALFiTlVWdg

entrez la description de l'image ici


2
Depuis la version 39.0.2171.95, l'option "Store as Global Variable" n'est pas disponible lors de l'inspection des appareils Android avec Chrome.
Walter Roman

1
@David Calhoun, j'ai voté pour votre réponse. Il semble que votre réponse ait été publiée le 12 juin 2014 et que celle acceptée était le 5 août 2014, prenant en grande partie exactement ce que vous aviez. Je dois admettre qu'il mentionne temp1 où votre réponse ne l'affiche que dans votre vidéo, c'est peut-être pour cela que l'autre réponse a été acceptée. Meilleurs vœux.
PatS

13

Suivez les étapes suivantes:

  1. Sortez l'objet avec console.log à partir de votre code, comme ceci: console.log (myObject)
  2. Faites un clic droit sur l'objet et cliquez sur "Stocker en tant qu'objet global". Chrome afficherait le nom de la variable à ce stade. Supposons que cela s'appelle "temp1".
  3. Dans la console, tapez: JSON.stringify(temp1).
  4. À ce stade, vous verrez l'intégralité de l'objet JSON sous la forme d'une chaîne que vous pouvez copier / coller.
  5. Vous pouvez utiliser des outils en ligne comme http://www.jsoneditoronline.org/ pour affiner votre chaîne à ce stade.

Une étape avec JSON.stringify (temp1) pourrait affecter l'exécution à long terme si l'objet est grand.
héroïne

@JoeTidee J'ai eu le même problème, mais j'ai configuré une debuggerinstruction puis récupéré ma var directement depuis la console au point d'arrêt.
Tony Brasunas


0

L'utilisation de "Store as a Global Variable" fonctionne, mais elle n'obtient que l'instance finale de l'objet, et non le moment où l'objet est enregistré (car vous souhaiterez probablement comparer les modifications apportées à l'objet au fur et à mesure qu'elles se produisent). Pour obtenir l'objet à son moment exact de modification, j'utilise ceci ...

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

Appelez ça comme ça ...

logObject(puzzle);

Vous souhaiterez peut-être supprimer l'expression régulière .replace (/./ g, ", \ n") si vos données contiennent des virgules.


0

Donc,. J'ai eu ce problème ,. sauf que j'ai [objet objet]

Je suis sûr que vous pourriez le faire avec la récursivité mais cela a fonctionné pour moi:

Voici ce que j'ai fait dans ma 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);

Collez ensuite dans votre éditeur.


0

Cela devrait aider à filtrer les objets profonds en omettant les objets récursifs Windowet les Nodeobjets.

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

Faites un clic droit sur les données que vous souhaitez stocker

  • Tout d'abord, faites un clic droit sur les données que vous souhaitez stocker -> sélectionnez "Stocker comme variable globale" Et la nouvelle variable temporaire apparaît comme ci-dessous: (variable temp3): Une nouvelle variable temporaire apparaît dans la console
  • Deuxième utilisation de la copie de commande (temp_variable_name) comme image: entrez la description de l'image ici Après cela, vous pouvez coller des données où vous le souhaitez. espérons utile /

0

Ajoutez ceci à votre console et exécutez

copy(JSON.stringify(foo));

Cela copie votre JSON dans le presse-papiers

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.