chrome.debugger

คำอธิบาย

chrome.debugger API ทำหน้าที่เป็นช่องทางการรับส่งข้อมูลสำรองสำหรับโปรโตคอลการแก้ไขข้อบกพร่องจากระยะไกลของ Chrome ใช้ chrome.debugger เพื่อแนบกับแท็บอย่างน้อย 1 แท็บเพื่อตรวจสอบการโต้ตอบของเครือข่าย แก้ข้อบกพร่องของ JavaScript เปลี่ยน DOM และ CSS และอื่นๆ ใช้พร็อพเพอร์ตี้ Debuggee tabId เพื่อกำหนดเป้าหมายแท็บด้วย sendCommand และกำหนดเส้นทางเหตุการณ์ตาม tabId จากการเรียกกลับ onEvent

สิทธิ์

debugger

หมายเหตุเกี่ยวกับความปลอดภัย

chrome.debugger API ไม่ได้ให้สิทธิ์เข้าถึงโดเมนโปรโตคอล Chrome DevTools ทั้งหมดเนื่องด้วยเหตุผลด้านความปลอดภัย โดเมนที่ใช้ได้ ได้แก่ Accessibility, Audits, CacheStorage, Console, CSS, Database, Debugger, DOM, DOMDebugger, DOMSnapshot, Emulation, Fetch, IO, Input, Inspector, Log, Network, Overlay, Page, Performance, Profiler, Runtime, Storage, Target, Tracing, WebAudio และ WebAuthn

ไฟล์ Manifest

คุณต้องประกาศสิทธิ์ "debugger"` ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API นี้

{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}

ตัวอย่าง

หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง API ของดีบักเกอร์จากที่เก็บchrome-extension-samples

ประเภท

Debuggee

ตัวระบุ Debuggee ต้องระบุ tabId, extensionId หรือ targetId

พร็อพเพอร์ตี้

  • extensionId

    สตริง ไม่บังคับ

    รหัสของส่วนขยายที่คุณต้องการแก้ไขข้อบกพร่อง การแนบกับหน้าพื้นหลังของส่วนขยายจะทำได้เฉพาะเมื่อใช้สวิตช์บรรทัดคำสั่ง --silent-debugger-extension-api เท่านั้น

  • tabId

    หมายเลข ไม่บังคับ

    รหัสของแท็บที่คุณต้องการแก้ไขข้อบกพร่อง

  • targetId

    สตริง ไม่บังคับ

    รหัสที่ไม่โปร่งใสของเป้าหมายการแก้ไขข้อบกพร่อง

DebuggerSession

Chrome 125 ขึ้นไป

ตัวระบุเซสชันของดีบักเกอร์ ต้องระบุ tabId, extensionId หรือ targetId อย่างใดอย่างหนึ่ง นอกจากนี้ คุณยังระบุ sessionId ที่ไม่บังคับได้ด้วย หากมีการระบุ sessionId สำหรับอาร์กิวเมนต์ที่ส่งจาก onEvent แสดงว่าเหตุการณ์มาจากเซสชันโปรโตคอลย่อยภายในเซสชันการแก้ไขข้อบกพร่องรูท หากมีการระบุ sessionId เมื่อส่งไปยัง sendCommand ระบบจะกำหนดเป้าหมายเซสชันโปรโตคอลย่อยภายในเซสชันการแก้ไขข้อบกพร่องรูท

พร็อพเพอร์ตี้

  • extensionId

    สตริง ไม่บังคับ

    รหัสของส่วนขยายที่คุณต้องการแก้ไขข้อบกพร่อง การแนบกับหน้าพื้นหลังของส่วนขยายจะทำได้เฉพาะเมื่อใช้สวิตช์บรรทัดคำสั่ง --silent-debugger-extension-api เท่านั้น

  • sessionId

    สตริง ไม่บังคับ

    รหัสที่ทึบแสงของเซสชันโปรโตคอลเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ระบุเซสชันย่อยภายในเซสชันรูทที่ระบุโดย tabId, extensionId หรือ targetId

  • tabId

    หมายเลข ไม่บังคับ

    รหัสของแท็บที่คุณต้องการแก้ไขข้อบกพร่อง

  • targetId

    สตริง ไม่บังคับ

    รหัสที่ไม่โปร่งใสของเป้าหมายการแก้ไขข้อบกพร่อง

DetachReason

Chrome 44 ขึ้นไป

เหตุผลในการสิ้นสุดการเชื่อมต่อ

ค่าแจกแจง

"target_closed"

"canceled_by_user"

TargetInfo

ข้อมูลเป้าหมายการแก้ไขข้อบกพร่อง

พร็อพเพอร์ตี้

  • เชื่อมต่อแล้ว

    บูลีน

    เป็นจริงหากดีบักเกอร์แนบอยู่แล้ว

  • extensionId

    สตริง ไม่บังคับ

    รหัสส่วนขยายที่กำหนดไว้หาก type = 'background_page'

  • faviconUrl

    สตริง ไม่บังคับ

    URL ของไอคอน Fav เป้าหมาย

  • id

    สตริง

    รหัสเป้าหมาย

  • tabId

    หมายเลข ไม่บังคับ

    รหัสแท็บที่กำหนดไว้หาก type == 'page'

  • title

    สตริง

    ชื่อหน้าเป้าหมาย

  • ประเภท

    ประเภทเป้าหมาย

  • URL

    สตริง

    URL เป้าหมาย

TargetInfoType

Chrome 44 ขึ้นไป

ประเภทเป้าหมาย

ค่าแจกแจง

"page"

"background_page"

"worker"

"อื่นๆ"

เมธอด

attach()

Promise
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)
: Promise<void>

แนบดีบักเกอร์กับเป้าหมายที่ระบุ

พารามิเตอร์

  • เป้าหมายการแก้ไขข้อบกพร่องที่คุณต้องการแนบ

  • requiredVersion

    สตริง

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

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • Promise<void>

    Chrome 96 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

detach()

Promise
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)
: Promise<void>

ยกเลิกการเชื่อมต่อดีบักเกอร์จากเป้าหมายที่ระบุ

พารามิเตอร์

  • เป้าหมายการแก้ไขข้อบกพร่องที่คุณต้องการยกเลิกการเชื่อมต่อ

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • Promise<void>

    Chrome 96 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

getTargets()

Promise
chrome.debugger.getTargets(
  callback?: function,
)
: Promise<TargetInfo[]>

แสดงรายการเป้าหมายการแก้ไขข้อบกพร่องที่ใช้ได้

พารามิเตอร์

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: TargetInfo[]) => void

    • ผลลัพธ์

      อาร์เรย์ของออบเจ็กต์ TargetInfo ที่สอดคล้องกับเป้าหมายการแก้ไขข้อบกพร่องที่พร้อมใช้งาน

การคืนสินค้า

  • Promise<TargetInfo[]>

    Chrome 96 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

sendCommand()

Promise
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)
: Promise<object | undefined>

ส่งคำสั่งที่ระบุไปยังเป้าหมายการแก้ไขข้อบกพร่อง

พารามิเตอร์

  • เป้าหมาย

    เป้าหมายการแก้ไขข้อบกพร่องที่คุณต้องการส่งคำสั่ง

  • method

    สตริง

    ชื่อเมธอด ควรเป็นวิธีใดวิธีหนึ่งที่กำหนดโดยโปรโตคอลการแก้ไขข้อบกพร่องจากระยะไกล

  • commandParams

    object ไม่บังคับ

    ออบเจ็กต์ JSON ที่มีพารามิเตอร์คำขอ ออบเจ็กต์นี้ต้องเป็นไปตามรูปแบบพารามิเตอร์การแก้ไขข้อบกพร่องจากระยะไกลสำหรับเมธอดที่ระบุ

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result?: object) => void

    • ผลลัพธ์

      object ไม่บังคับ

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

การคืนสินค้า

  • Promise<object | undefined>

    Chrome 96 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

กิจกรรม

onDetach

chrome.debugger.onDetach.addListener(
  callback: function,
)

เริ่มทำงานเมื่อเบราว์เซอร์สิ้นสุดเซสชันการแก้ไขข้อบกพร่องสำหรับแท็บ ซึ่งจะเกิดขึ้นเมื่อมีการปิดแท็บหรือมีการเรียกใช้ Chrome DevTools สำหรับแท็บที่แนบ

พารามิเตอร์

onEvent

chrome.debugger.onEvent.addListener(
  callback: function,
)

เริ่มทำงานทุกครั้งที่เกิดเหตุการณ์การวัดผลปัญหาเป้าหมายการแก้ไขข้อบกพร่อง

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (source: DebuggerSession, method: string, params?: object) => void

    • method

      สตริง

    • พารามิเตอร์

      object ไม่บังคับ