วิธีใช้ดีบักเกอร์เครือข่ายของ Chrome ด้วยการเปลี่ยนเส้นทาง


379

โปรแกรมดีบั๊กเครือข่าย Chrome ให้มุมมองที่ยอดเยี่ยมเกี่ยวกับทรัพยากร HTTP ทั้งหมดที่โหลดสำหรับหน้าเว็บ แต่จะล้างรายการเมื่อมีการโหลดหน้า HTML ระดับบนสุดใหม่ สิ่งนี้ทำให้ยากมากในการดีบักหน้าเว็บที่โหลดซ้ำโดยอัตโนมัติด้วยเหตุผลหนึ่งข้อหรืออีกข้อหนึ่ง (การเรียกใช้สคริปต์หรือการตอบสนอง 300 ข้อ)

ฉันจะบอกให้ Chrome ไม่ล้างตัวแก้จุดบกพร่องเครือข่ายเมื่อโหลดหน้าเว็บระดับบนใหม่ได้หรือไม่ หรือฉันจะกลับไปดูทรัพยากรเครือข่ายของหน้าก่อนหน้าได้ไหม

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


ความซ้ำซ้อนนี้ได้รับ upvotes มากกว่าที่โพสต์เมื่อ 1 เดือนก่อนหน้า stackoverflow.com/q/10703944/632951
Pacerier

6
@Pacerier สิ่งที่คุณเชื่อมโยงไม่ปรากฏว่าคุณโพสต์ แต่เหตุผลมีแนวโน้มว่าจะไม่มี "Chrome" ในชื่อ เมื่อผู้คนกำลังมองหาบางสิ่งที่เกี่ยวข้องกับ Chrome การค้นหาของพวกเขามักจะมีคำว่า Chrome "เครื่องมือสำหรับนักพัฒนาของ Google" นั้นคลุมเครืออย่างไม่น่าเชื่อ
Joel Mellon

คำตอบ:


527

สิ่งนี้มีการเปลี่ยนแปลงตั้งแต่ v32 ขอบคุณ @Daniel Alexiuc & @Thanatos สำหรับความคิดเห็นของพวกเขา


ปัจจุบัน (≥ v32)

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

แท็บเครือข่าย Chrome v33 DevTools: เก็บบันทึก

จุดสีแดงเล็ก ๆ ทางด้านซ้ายตอนนี้มีวัตถุประสงค์เพื่อเปิดและปิดการบันทึกเครือข่ายอย่างสมบูรณ์


รุ่นเก่ากว่า

ใน Chrome รุ่นเก่า (v21 ที่นี่) มีจุดสีแดงเล็ก ๆ น้อย ๆ ที่คลิกได้ในส่วนท้ายของแท็บ "เครือข่าย"

แท็บเครือข่าย Chrome v22 DevTools: เก็บบันทึกไว้เมื่อนำทาง

หากคุณโฮเวอร์เหนือมันก็จะบอกคุณว่ามันจะ "เก็บรักษาบันทึกการนำทาง" เมื่อเปิดใช้งาน มันถือสัญญา


1
ในเวอร์ชั่น 32 ยังคงมีอยู่ แต่ย้ายไปที่ด้านบนสุดของแผงเครือข่าย
Daniel Alexiuc

4
จริงๆแล้วตอนนี้อยู่ที่ด้านบน แต่เรียกว่า "เก็บบันทึก" และเป็นช่องทำเครื่องหมาย อย่างสับสนยังมีไอคอนบันทึกสีแดง แต่นั่นเป็นเพียงว่าจะเข้าสู่ระบบทั้งหมด
Thanatos

1
ขอบคุณสำหรับการแสดงความคิดเห็นในการเปลี่ยนแปลงฉันเพิ่งปรับปรุงคำตอบตาม
bfncs

@ruub อินเทอร์เฟซในขณะนี้ดูเหมือนแตกต่างกันเล็กน้อย แต่ยังมีช่องทำเครื่องหมายที่ชื่อว่า "บันทึกการเก็บรักษา" ที่ด้านบนของแท็บเครือข่าย: i.imgur.com/fhSDYSz.png
bfncs

14
@ rubenlop88 ตรวจสอบให้แน่ใจว่าคุณไม่ได้กรองเอกสารอยู่มิเช่นนั้นจะไม่มีอยู่จริง คุณสามารถตรวจสอบพวกเขาโดยเฉพาะในแท็บอื่น ๆ
alex

173

ฉันไม่รู้วิธีการบังคับให้ Chrome ไม่ล้างตัวแก้จุดบกพร่องเครือข่าย แต่สิ่งนี้อาจบรรลุสิ่งที่คุณต้องการ:

  1. เปิดคอนโซล js
  2. window.addEventListener("beforeunload", function() { debugger; }, false)

วิธีนี้จะหยุด Chrome ก่อนที่จะโหลดหน้าใหม่ด้วยการกดเบรกพอยต์


55
นี่ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถาม แต่จริงๆแล้วมันคือสิ่งที่ฉันกำลังมองหา ขอบคุณ
isaaclw

2
นี่มันลื่นมาก ฉันมาถึงที่นี่เพื่อหาทางออก "หยุดก่อนที่จะเปลี่ยนเส้นทาง" และนี่คือ คำตอบที่ยอมรับนั้นง่ายต่อการจดจำ แต่นี่คือ rad
Joel Mellon

19
สิ่งนี้มีประโยชน์อย่างยิ่งเนื่องจาก chrome ไม่แสดงเนื้อหาการตอบกลับของเซิร์ฟเวอร์หากเบราว์เซอร์เปลี่ยนเส้นทางทันทีหลังจากได้รับการตอบกลับ
Kristóf Dombi

23

เพิ่งอัปเดตคำตอบ @bfncs

ฉันคิดว่า Chrome 43 เปลี่ยนพฤติกรรมเล็กน้อย คุณยังคงต้องเปิดใช้งาน Preserve เพื่อดู แต่ตอนนี้เปลี่ยนเส้นทางแสดงภายใต้แท็บอื่น ๆ เมื่อเอกสารที่โหลดปรากฏขึ้นภายใต้ Doc

สิ่งนี้ทำให้ฉันสับสนอยู่เสมอเพราะฉันมีคำขอเครือข่ายจำนวนมากและกรองตามประเภท XHR, Doc, JS เป็นต้น แต่ในกรณีที่เปลี่ยนเส้นทางแท็บ Doc ว่างเปล่าดังนั้นฉันต้องเดา


1
คุณคือฮีโร่ที่ฉันตามหา!
Matthew Haworth

23

อีกวิธีที่ดีในการแก้ปัญหาการโทรผ่านเครือข่ายก่อนที่จะเปลี่ยนเส้นทางไปยังหน้าอื่นคือการเลือกbeforeunloadจุดพักเหตุการณ์

ด้วยวิธีนี้คุณจะมั่นใจได้ว่าจะทำให้การไหลลื่นไหลก่อนที่มันจะเปลี่ยนเส้นทางไปยังหน้าอื่นด้วยวิธีนี้การโทรเครือข่ายข้อมูลเครือข่ายและบันทึกคอนโซลยังคงอยู่ที่นั่น

โซลูชันนี้ดีที่สุดเมื่อคุณต้องการตรวจสอบการตอบสนองของการโทร

Chrome beforeunload จุดพักเหตุการณ์

PS: คุณยังสามารถใช้จุดพัก XHR หากคุณต้องการหยุดก่อนการโทรที่เฉพาะเจาะจงหรือการโทรใด ๆ (ดูตัวอย่างภาพ) จุดพัก XHR


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