Javascript / Chrome - Cách sao chép một đối tượng từ trình kiểm tra webkit dưới dạng mã


493

Tôi đang thực hiện một câu lệnh console.log trong javascript của mình để đăng nhập một đối tượng javascript. Tôi tự hỏi liệu có cách nào không, khi đã xong - để sao chép đối tượng đó dưới dạng mã javascript. Những gì tôi đang cố gắng làm là chuyển đổi một đối tượng được tạo bằng ajax để phân tích nguồn cấp dữ liệu xml thành đối tượng javascript tĩnh để tệp có thể chạy cục bộ mà không cần máy chủ. Tôi đã bao gồm một ảnh chụp màn hình của đối tượng trong cửa sổ thanh tra chrome để bạn có thể thấy những gì tôi đang cố gắng làm.nhập mô tả hình ảnh ở đây


1
Hãy thử sử dụng firefox và tùy chọn .toSource (). Thật dễ dàng hơn
chepe263

Câu trả lời:


1249
  1. Nhấp chuột phải vào một đối tượng trong bảng điều khiển của Chrome và chọn Store as Global Variabletừ menu ngữ cảnh. Nó sẽ trả về một cái gì đó giống temp1như tên biến.

  2. Chrome cũng có một copy()phương thức, vì vậy copy(temp1)trong bảng điều khiển nên sao chép đối tượng đó vào khay nhớ tạm của bạn.

Sao chép đối tượng Javascript trong DevTools Chrome

Lưu ý về các đối tượng đệ quy: Nếu bạn đang cố sao chép một đối tượng đệ quy, bạn sẽ nhận được [object Object]. Cách ra là copy(JSON.stringify(temp1)), đối tượng sẽ được sao chép hoàn toàn vào bảng tạm của bạn dưới dạng JSON hợp lệ, do đó bạn có thể định dạng nó theo ý muốn, sử dụng một trong nhiều tài nguyên.


3
trả lại không xác định trong chrome Phiên bản 49.0.2623.87 (64-bit)? tại sao>
Pardeep Jain

10
@PardeepJain - điều đó được mong đợi từ phương thức copy () vì không có gì để trả về. Dữ liệu nên có trong clipboard của bạn.
Carl

35
Điều này chỉ mang lại [object Object]cho tôi.
Ullallulloo

1
@Ullallulloo hãy thử đăng xuất bằng JSON.opesify như thế này: stackoverflow.com/a/4293047/622287
kevnk

3
nó chỉ hoạt động nếu bạn có một đối tượng JS nông, nếu bạn có đối tượng sâu đệ quy thì bạn sẽ nhận được [Đối tượng] - điều đó được mong đợi
Marwen Trabelsi

62

Hãy thử JSON.stringify(). Sao chép chuỗi kết quả. Không hoạt động với các đối tượng có chứa các tham chiếu tròn.


7
Tôi không thấy nó hoạt động như thế nào trừ khi bạn sửa đổi mã ghi nhật ký.
iConnor

16
Tôi nhận đượcTypeError: Converting circular structure to JSON
Tony Brasunas

40

Bạn có thể sao chép một đối tượng vào bảng clip của mình bằng cách sử dụng bản sao (JSON.opesify (Object_Name)); trong bảng điều khiển.

Ví dụ: - Sao chép và Dán mã dưới đây trong bảng điều khiển của bạn và nhấn ENTER. Bây giờ, hãy thử dán (CTRL + V cho Windows hoặc CMD + V cho mac) ở một nơi khác và bạn sẽ nhận được {"name": "Daniel", "age": 25}

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

copy(JSON.stringify(profile));

14
Không hoạt động với các nút DOM, cửa sổ hoặc bất kỳ đối tượng nào khác có hình tròn
Carles Alcolea

Cho đến nay, giải pháp đơn giản nhất cho một đối tượng lớn nhưng đơn giản.
Hersheezy

Giải pháp đơn giản nhất
Anandhukrishna VR

26

Giờ đây, bạn có thể thực hiện điều này trong Chrome bằng cách nhấp chuột phải vào đối tượng và chọn "Lưu trữ dưới dạng biến toàn cầu": http://www.youtube.com/watch?v=qALFiTlVWdg

nhập mô tả hình ảnh ở đây


2
Kể từ Phiên bản 39.0.2171.95, tùy chọn "Lưu trữ dưới dạng biến toàn cầu" không khả dụng khi kiểm tra các thiết bị Android bằng Chrome.
Walter Roman

1
@David Calhoun, tôi đã bình chọn cho câu trả lời của bạn. Có vẻ như câu trả lời của bạn đã được đăng vào ngày 12 tháng 6 năm 2014 và câu trả lời được chấp nhận là ngày 5 tháng 8 năm 2014, phần lớn lấy chính xác những gì bạn có. Tôi phải thừa nhận rằng anh ấy đề cập đến temp1 trong đó câu trả lời của bạn chỉ hiển thị nó trong video của bạn, vì vậy có lẽ đó là lý do tại sao câu trả lời khác được chấp nhận. Lời chúc tốt nhất.
PatS

13

Thực hiện theo các bước sau:

  1. Xuất đối tượng với console.log từ mã của bạn, như vậy: console.log (myObject)
  2. Nhấp chuột phải vào đối tượng và nhấp vào "Lưu trữ dưới dạng đối tượng toàn cầu". Chrome sẽ in tên của biến tại thời điểm này. Giả sử nó được gọi là "temp1".
  3. Trong bảng điều khiển, gõ : JSON.stringify(temp1).
  4. Tại thời điểm này, bạn sẽ thấy toàn bộ đối tượng JSON là một chuỗi mà bạn có thể sao chép / dán.
  5. Bạn có thể sử dụng các công cụ trực tuyến như http://www.jsoneditoronline.org/ để làm đẹp chuỗi của bạn tại thời điểm này.

Bước với JSON.opesify (temp1) có thể ảnh hưởng đến việc thực thi trong thời gian dài nếu đối tượng lớn.
heroin

@JoeTidee Tôi có cùng một vấn đề, nhưng tôi đã thiết lập một debuggercâu lệnh và sau đó lấy var của tôi trực tiếp từ bàn điều khiển ở điểm dừng.
Tony Brasunas


0

Sử dụng "Lưu trữ dưới dạng biến toàn cầu" hoạt động, nhưng nó chỉ lấy phiên bản cuối cùng của đối tượng và không phải là thời điểm đối tượng được ghi lại (vì bạn có thể muốn so sánh các thay đổi với đối tượng khi chúng xảy ra). Để có được đối tượng tại thời điểm chính xác của nó được sửa đổi, tôi sử dụng ...

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

Gọi nó như vậy ...

logObject(puzzle);

Bạn có thể muốn xóa regex .replace (/./ g, ", \ n") nếu dữ liệu của bạn có dấu phẩy trong đó.


0

Vì thế,. Tôi đã có vấn đề này ,. ngoại trừ tôi có [đối tượng]

Tôi chắc rằng bạn có thể làm điều này với đệ quy nhưng điều này hiệu quả với tôi:

Đây là những gì tôi đã làm trong bảng điều khiển của mình:

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

Sau đó dán vào trình soạn thảo của bạn.


0

Điều này sẽ giúp xâu chuỗi các đối tượng sâu bằng cách loại bỏ đệ quy WindowNodecác đối tượng.

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

Nhấp chuột phải vào dữ liệu mà bạn muốn lưu trữ


0

Thêm phần này vào bảng điều khiển của bạn và thực hiện

copy(JSON.stringify(foo));

Điều này sao chép JSON của bạn vào clipboard

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.