Javascript / Chrome - Bir nesneyi webkit denetçisinden kod olarak kopyalama


493

Bir javascript nesnesini günlüğe kaydetmek için benim javascript bir console.log deyimi yapıyorum. Bu nesneyi javascript kodu olarak kopyalamanın bir yolu var mı, merak ediyorum. Ne yapmaya çalışıyorum ajax kullanarak bir xml besleme statik bir JavaScript nesnesine ayrıştırmak için oluşturulan bir nesne dönüştürmek, böylece bir dosya sunucu olmadan yerel olarak çalışabilir. Ne yapmaya çalıştığımı görebilmeniz için krom denetçisi penceresine nesnenin ekran görüntüsünü ekledim.resim açıklamasını buraya girin


1
Firefox'u ve .toSource () seçeneğini kullanmayı deneyin. Daha kolay
chepe263

Yanıtlar:


1247
  1. Chrome konsolunda bir nesneyi sağ tıklayın Store as Global Variableve içerik menüsünden seçim yapın. temp1Değişken adı gibi bir şey döndürür .

  2. Chrome'un da bir copy()yöntemi vardır, bu nedenle copy(temp1)konsolda bu nesneyi panonuza kopyalamalıdır.

Javascript Nesnesini Chrome DevTools'ta Kopyala

Özyinelemeli Nesneler Hakkında Not: Özyinelemeli bir nesneyi kopyalamaya çalışıyorsanız, elde edersiniz [object Object]. Çıkış yolu copy(JSON.stringify(temp1)), nesne geçerli bir JSON olarak panonuza tamamen kopyalanacaktır, böylece birçok kaynaktan birini kullanarak istediğiniz gibi biçimlendirebilirsiniz.


3
49.0.2623.87 (64 bit) sürümünde tanımsız dönüş var mı? neden>?
Pardeep Jain

10
@PardeepJain - kopyalanacak bir şey olmadığı için copy () yönteminden bekleniyor. Veriler panonuzda olmalıdır.
Carl

35
Bu sadece [object Object]bana veriyor .
Ullallulloo

1
@Ullallulloo JSON.stringify ile oturumunuzu kapatmayı deneyin: stackoverflow.com/a/4293047/622287
kevnk

3
yalnızca sığ bir JS nesneniz varsa çalışır, özyinelemeli derin nesneniz varsa [Nesne Nesnesi] elde edersiniz - bu beklenir
Marwen Trabelsi

62

Deneyin JSON.stringify(). Elde edilen dizeyi kopyalayın. Dairesel referanslar içeren nesnelerle çalışmaz.


7
Günlüğe kaydedilen kodu değiştirmedikçe nasıl çalışacağını göremiyorum.
iConnor

16
AnladımTypeError: Converting circular structure to JSON
Tony Brasunas

40

Copy (JSON.stringify (Object_Name)) kullanarak bir nesneyi klibi panonuza kopyalayabilirsiniz; konsolda.

Örneğin: - Aşağıdaki kodu kopyalayıp konsolunuza yapıştırın ve ENTER tuşuna basın. Şimdi, başka bir yere yapıştırın (Windows için CTRL + V veya mac için CMD + V) ve {"name": "Daniel", "age": 25}

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

copy(JSON.stringify(profile));

14
DOM düğümleri, pencere veya dairesel olduğu başka bir nesneyle çalışmaz
Carles Alcolea

Büyük ama basit bir nesne için açık ara en kolay çözüm.
Hersheezy

en kolay çözüm
Anandhukrishna VR

26

Artık bunu Chrome'da, nesneye sağ tıklayıp "Global Değişken Olarak Kaydet" i seçerek yapabilirsiniz: http://www.youtube.com/watch?v=qALFiTlVWdg

resim açıklamasını buraya girin


2
39.0.2171.95 sürümünden itibaren, Android cihazlarını Chrome ile incelerken "Global Değişken Olarak Kaydet" seçeneği kullanılamaz.
Walter Roman

1
@ David Calhoun, cevabına oy verdim. Cevabınız 12 Haziran 2014 tarihinde gönderildi ve kabul edilen yanıt 5 Ağustos 2014 idi ve büyük ölçüde tam olarak ne aldığınızı aldı. İtiraf etmeliyim ki cevabınız sadece videonuzda gösterdiği temp1'den bahsediyor, bu yüzden diğer cevap kabul edildi. En iyi dileklerimle.
PatS

13

Aşağıdaki adımları izleyin:

  1. Nesne kodunuzdan console.log ile çıktı alın, şöyle: console.log (myObject)
  2. Nesneye sağ tıklayın ve "Global Nesne Olarak Sakla" ya tıklayın. Chrome bu noktada değişkenin adını yazdıracaktır. Diyelim ki "temp1".
  3. Konsolda, yazın: JSON.stringify(temp1).
  4. Bu noktada, tüm JSON nesnesini kopyalayabileceğiniz / yapıştırabileceğiniz bir dize olarak görürsünüz.
  5. Bu noktada dizenizi güzelleştirmek için http://www.jsoneditoronline.org/ gibi çevrimiçi araçları kullanabilirsiniz .

JSON.stringify (temp1) ile adım, nesne büyükse uzun süre yürütülmesini etkileyebilir.
eroin

@JoeTidee Aynı sorunu yaşadım, ama bir debuggerifade oluşturdum ve sonra varlığımı doğrudan kesme noktasındaki konsoldan aldım.
Tony Brasunas


0

"Genel Değişken Olarak Sakla" işlevini kullanmak işe yarar, ancak nesnenin günlüğe kaydedildiği anı değil, yalnızca nesnenin son örneğini alır (büyük olasılıkla nesnedeki değişiklikleri gerçekleştikçe karşılaştırmak isteyebilirsiniz). Nesneyi değiştirilme zamanında tam noktasında almak için bunu kullanıyorum ...

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

Öyle deyin ...

logObject(puzzle);

Verilerinizde virgül varsa, .replace (/./ g, ", \ n") normal ifadesini kaldırmak isteyebilirsiniz.


0

Yani,. Bu sorunu yaşadım. dışında [nesne nesnesi] var

Eminim bunu özyineleme ile yapabilirsin ama bu benim için çalıştı:

Konsolumda yaptığım şey:

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

Ardından düzenleyicinize yapıştırın.


0

Bu, özyinelemeli Windowve Nodenesneleri dışarıda bırakarak derin nesneleri dizmeye yardımcı olmalıdır .

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

Bunu konsolunuza ekleyin ve yürütün

copy(JSON.stringify(foo));

Bu JSON'unuzu panoya kopyalar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.