chrome.debugger

คำอธิบาย

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

สิทธิ์

debugger

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

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

หมายเหตุ

ด้วยเหตุผลด้านความปลอดภัย chrome.debugger API ไม่ได้ให้สิทธิ์เข้าถึงโดเมนโปรโตคอลสำหรับนักพัฒนาเว็บใน Chrome ทั้งหมด โดเมนที่มีอยู่ได้แก่ การช่วยเหลือพิเศษ, การตรวจสอบ, CacheStorage, คอนโซล, CSS, ฐานข้อมูล, โปรแกรมแก้ไขข้อบกพร่อง, DOM, DOMDebugger, DOMSnapshotWebAudioWebAuthn

ตัวอย่าง

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

ประเภท

Debuggee

ตัวระบุ Debuggee ต้องระบุ TabId, extensionsId หรือ targetId

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

  • extensionId

    string ไม่บังคับ

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

  • tabId

    ตัวเลข ไม่บังคับ

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

  • targetId

    string ไม่บังคับ

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

DebuggerSession

รอดำเนินการ

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

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

  • extensionId

    string ไม่บังคับ

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

  • sessionId

    string ไม่บังคับ

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

  • tabId

    ตัวเลข ไม่บังคับ

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

  • targetId

    string ไม่บังคับ

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

DetachReason

Chrome 44 ขึ้นไป

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

ค่าแจกแจง

"target_closed"

TargetInfo

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

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

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

    boolean

    เป็นจริงหากแนบโปรแกรมแก้ไขข้อบกพร่องไว้แล้ว

  • extensionId

    string ไม่บังคับ

    รหัสส่วนขยายที่กำหนดหากประเภท = 'background_page'

  • faviconUrl

    string ไม่บังคับ

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

  • id

    string

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

  • tabId

    ตัวเลข ไม่บังคับ

    รหัสแท็บที่กำหนดหากประเภท == 'page'

  • title

    string

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

  • ประเภท

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

  • url

    string

    URL เป้าหมาย

TargetInfoType

Chrome 44 ขึ้นไป

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

ค่าแจกแจง

"background_page"

วิธีการ

attach()

สัญญา
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)

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

พารามิเตอร์

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

  • requiredVersion

    string

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

  • Callback

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

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    Manifest V3 ขึ้นไปรองรับคำสัญญา แต่จะใช้โค้ดเรียกกลับเพื่อความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 ฟีเจอร์ในการเรียกใช้ฟังก์ชันเดียวกันได้ คำสัญญาจะยุติด้วยประเภทเดียวกันกับที่ส่งไปยังโค้ดเรียกกลับ

detach()

สัญญา
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)

ปลดโปรแกรมแก้ไขข้อบกพร่องออกจากเป้าหมายที่ระบุ

พารามิเตอร์

  • การแก้ไขข้อบกพร่องเป้าหมายที่ต้องการปลดออก

  • Callback

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

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    Manifest V3 ขึ้นไปรองรับคำสัญญา แต่จะใช้โค้ดเรียกกลับเพื่อความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 ฟีเจอร์ในการเรียกใช้ฟังก์ชันเดียวกันได้ คำสัญญาจะยุติด้วยประเภทเดียวกันกับที่ส่งไปยังโค้ดเรียกกลับ

getTargets()

สัญญา
chrome.debugger.getTargets(
  callback?: function,
)

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

พารามิเตอร์

  • Callback

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

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

    (result: TargetInfo[])=>void

    • ผลลัพธ์

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

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

  • Promise<TargetInfo[]>

    Chrome 96 ขึ้นไป

    Manifest V3 ขึ้นไปรองรับคำสัญญา แต่จะใช้โค้ดเรียกกลับเพื่อความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 ฟีเจอร์ในการเรียกใช้ฟังก์ชันเดียวกันได้ คำสัญญาจะยุติด้วยประเภทเดียวกันกับที่ส่งไปยังโค้ดเรียกกลับ

sendCommand()

สัญญา
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)

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

พารามิเตอร์

  • เป้าหมาย

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

  • method

    string

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

  • commandParams

    ออบเจ็กต์ ไม่บังคับ

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

  • Callback

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

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

    (result?: object)=>void

    • ผลลัพธ์

      ออบเจ็กต์ ไม่บังคับ

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

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

  • Promise<object|undefined>

    Chrome 96 ขึ้นไป

    Manifest V3 ขึ้นไปรองรับคำสัญญา แต่จะใช้โค้ดเรียกกลับเพื่อความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 ฟีเจอร์ในการเรียกใช้ฟังก์ชันเดียวกันได้ คำสัญญาจะยุติด้วยประเภทเดียวกันกับที่ส่งไปยังโค้ดเรียกกลับ

กิจกรรม

onDetach

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

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

พารามิเตอร์

onEvent

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

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

พารามิเตอร์

  • Callback

    ฟังก์ชัน

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

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

    • method

      string

    • params

      ออบเจ็กต์ ไม่บังคับ