Javascript / Chrome - วิธีคัดลอกวัตถุจากผู้ตรวจสอบ webkit เป็นรหัส


493

ฉันกำลังทำคำสั่ง console.log ในจาวาสคริปต์ของฉันเพื่อบันทึกวัตถุจาวาสคริปต์ ฉันสงสัยว่ามีวิธีเมื่อเสร็จแล้ว - เพื่อคัดลอกวัตถุนั้นเป็นรหัสจาวาสคริปต์ สิ่งที่ฉันพยายามจะทำคือแปลงวัตถุที่สร้างขึ้นโดยใช้ ajax เพื่อแยกวิเคราะห์ฟีด xml เป็นวัตถุจาวาสคริปต์แบบคงที่เพื่อให้ไฟล์สามารถทำงานในเครื่องโดยไม่ต้องใช้เซิร์ฟเวอร์ ฉันได้รวมภาพหน้าจอของวัตถุในหน้าต่างตัวตรวจสอบ Chrome เพื่อให้คุณสามารถดูสิ่งที่ฉันพยายามทำป้อนคำอธิบายรูปภาพที่นี่


1
ลองใช้ firefox และตัวเลือก. toSource () ง่ายขึ้น
chepe263

คำตอบ:


1247
  1. คลิกขวาที่วัตถุในคอนโซลของ Chrome และเลือกStore as Global Variableจากเมนูบริบท มันจะกลับมาเหมือนtemp1ชื่อตัวแปร

  2. Chrome ยังมีcopy()วิธีการดังนั้นcopy(temp1)ในคอนโซลควรคัดลอกวัตถุนั้นไปยังคลิปบอร์ดของคุณ

คัดลอก Javascript Object ใน Chrome DevTools

หมายเหตุเกี่ยวกับวัตถุซ้ำ:ถ้าคุณกำลังพยายามที่จะคัดลอกวัตถุ recursive [object Object]คุณจะได้รับ ทางออกคือcopy(JSON.stringify(temp1))วัตถุจะถูกคัดลอกไปยังคลิปบอร์ดของคุณอย่างสมบูรณ์เป็น JSON ที่ถูกต้องดังนั้นคุณจึงสามารถจัดรูปแบบตามที่คุณต้องการโดยใช้ทรัพยากรอย่างใดอย่างหนึ่ง


3
ส่งคืนไม่ได้กำหนดใน chrome เวอร์ชัน 49.0.2623.87 (64-bit)? ทำไม>
Pardeep Jain

10
@PardeepJain - คาดว่ามาจากวิธีการ copy () เพราะไม่มีอะไรจะส่งคืน ข้อมูลควรอยู่ในคลิปบอร์ดของคุณ
คาร์ล

35
นี่แค่ให้[object Object]สำหรับฉัน
Ullallulloo

1
@Ullallulloo ลองออกจากระบบด้วย JSON.stringify เช่นนี้: stackoverflow.com/a/4293047/622287
kevnk

3
มันจะทำงานเฉพาะในกรณีที่คุณมีวัตถุ JS ตื้นถ้าคุณมีวัตถุลึกซ้ำแล้วคุณจะได้รับ [วัตถุวัตถุ] - ที่คาดว่า
Marwen Trabelsi

62

ลองJSON.stringify()ดู คัดลอกสตริงผลลัพธ์ ไม่ทำงานกับวัตถุที่มีการอ้างอิงแบบวงกลม


7
ฉันไม่เห็นวิธีการทำงานเว้นแต่คุณจะแก้ไขรหัสที่บันทึกไว้
iConnor

16
ฉันได้รับTypeError: Converting circular structure to JSON
Tony Brasunas

40

คุณสามารถคัดลอกวัตถุไปยังบอร์ดคลิปของคุณโดยใช้copy (JSON.stringify (Object_Name)); ในคอนโซล

เช่น: - คัดลอกและวางรหัสด้านล่างในคอนโซลของคุณแล้วกด ENTER ตอนนี้ให้ลองวาง (CTRL + V สำหรับ Windows หรือ CMD + V สำหรับ mac) ที่อื่นและคุณจะได้รับ {"ชื่อ": "Daniel", "อายุ": 25}

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

copy(JSON.stringify(profile));

14
ใช้งานไม่ได้กับโหนด DOM, หน้าต่างหรือวัตถุอื่น ๆ ที่เป็นวงกลม
Carles Alcolea

โดยไกลทางออกที่ง่ายที่สุดสำหรับวัตถุขนาดใหญ่ แต่ง่าย
Hersheezy

ทางออกที่ง่ายที่สุด
Anandhukrishna VR

26

ตอนนี้คุณสามารถทำได้ใน Chrome โดยคลิกขวาที่วัตถุและเลือก "จัดเก็บเป็นตัวแปรทั่วโลก": http://www.youtube.com/watch?v=qALFiTlVWdg

ป้อนคำอธิบายรูปภาพที่นี่


2
ในเวอร์ชัน 39.0.2171.95 ตัวเลือก "Store as Global Variable" จะไม่สามารถใช้งานได้เมื่อตรวจสอบอุปกรณ์ Android ด้วย Chrome
วอลเตอร์โรมัน

1
@ David Calhoun ฉันโหวตให้กับคำตอบของคุณ ดูเหมือนว่าคำตอบของคุณจะถูกโพสต์เมื่อวันที่ 12 มิถุนายน 2014 และคำตอบที่ได้รับคือ 5 สิงหาคม 2014 ส่วนใหญ่รับสิ่งที่คุณมี ฉันต้องยอมรับว่าเขาพูดถึง temp1 ที่คำตอบของคุณแสดงเฉพาะในวิดีโอของคุณดังนั้นบางทีนั่นอาจเป็นเหตุผลว่าทำไมคำตอบอื่น ๆ จึงเป็นที่ยอมรับ ด้วยความปรารถนาดี
PatS

13

ทำตามขั้นตอนต่อไปนี้:

  1. เอาท์พุทวัตถุด้วย console.log จากรหัสของคุณเช่น: console.log (myObject)
  2. คลิกขวาที่วัตถุแล้วคลิก "Store as Global Object" Chrome จะพิมพ์ชื่อของตัวแปร ณ จุดนี้ สมมติว่ามันเรียกว่า "temp1"
  3. ในคอนโซลพิมพ์: JSON.stringify(temp1).
  4. ณ จุดนี้คุณจะเห็นวัตถุ JSON ทั้งหมดเป็นสตริงที่คุณสามารถคัดลอก / วาง
  5. คุณสามารถใช้เครื่องมือออนไลน์เช่นhttp://www.jsoneditoronline.org/เพื่อระบุสตริงของคุณในตอนนี้

ขั้นตอนกับ JSON.stringify (temp1) อาจส่งผลต่อการทำงานเป็นเวลานานหากวัตถุมีขนาดใหญ่
เฮโรอีน

@ JoeTidee ฉันมีปัญหาเดียวกัน แต่ฉันตั้งค่าdebuggerคำสั่งแล้วดึง var ของฉันโดยตรงจากคอนโซลที่จุดพัก
Tony Brasunas

11

หากคุณส่งวัตถุไปยังคำขอคุณสามารถคัดลอกได้จากแท็บ Chrome -> เครือข่าย

ขอน้ำหนักบรรทุก -> ดูที่มา

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


2
หลังจากคัดลอกน้ำหนักบรรทุกแจงคุณสามารถรูปแบบ JSON จากjsonformatter.curiousconcept.com
มูฮัมหมัดฮัสซัน

0

การใช้งาน "จัดเก็บเป็นตัวแปรทั่วโลก" ทำงาน แต่ได้รับอินสแตนซ์สุดท้ายของวัตถุเท่านั้นและไม่ใช่ช่วงเวลาที่วัตถุถูกบันทึก (เนื่องจากคุณอาจต้องการเปรียบเทียบการเปลี่ยนแปลงกับวัตถุที่เกิดขึ้น) เพื่อให้วัตถุอยู่ในตำแหน่งที่ถูกต้องในเวลาที่ถูกแก้ไขฉันใช้สิ่งนี้ ...

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

เรียกว่าเป็นอย่างนั้น ...

logObject(puzzle);

คุณอาจต้องการลบ regex .replace (/./ g, ", \ n") หากข้อมูลของคุณมีเครื่องหมายจุลภาคอยู่


0

ดังนั้น,. ฉันมีปัญหานี้ ยกเว้นฉันได้ [object object]

ฉันแน่ใจว่าคุณสามารถทำได้ด้วยการเรียกซ้ำ แต่วิธีนี้ใช้ได้กับฉัน:

นี่คือสิ่งที่ฉันทำในคอนโซล:

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

จากนั้นวางลงในเครื่องมือแก้ไขของคุณ


0

สิ่งนี้จะช่วยทำให้วัตถุที่มีความลึกเป็นวัตถุโดยการปล่อยให้เกิดซ้ำWindowและ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

คลิกขวาที่ข้อมูลที่คุณต้องการจัดเก็บ

  • ประการแรกคลิกขวาที่ข้อมูลที่คุณต้องการจัดเก็บ -> เลือก "จัดเก็บเป็นตัวแปรทั่วโลก" และตัวแปรชั่วคราวใหม่จะปรากฏขึ้นเป็นร้อง: (ตัวแปร temp3): ตัวแปรชั่วคราวใหม่ปรากฏในคอนโซล
  • คัดลอกคำสั่งการใช้งานครั้งที่สอง (temp_variable_name) เช่นภาพ: ป้อนคำอธิบายภาพที่นี่ หลังจากนั้นคุณสามารถวางข้อมูลไปยังที่ใดก็ได้ที่คุณต้องการ หวังว่ามีประโยชน์ /

0

เพิ่มสิ่งนี้ไปยังคอนโซลของคุณและดำเนินการ

copy(JSON.stringify(foo));

สิ่งนี้คัดลอก JSON ของคุณไปยังคลิปบอร์ด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.