chrome.debugger

الوصف

تعمل واجهة برمجة التطبيقات chrome.debugger كوسيلة نقل بديلة لبروتوكول تصحيح الأخطاء عن بُعد في Chrome. استخدِم chrome.debugger للإرفاق بعلامة تبويب واحدة أو أكثر بغرض التفاعل مع الشبكة، وتصحيح أخطاء JavaScript، وتغيير نموذج DOM وCSS، وغير ذلك. استخدِم السمة Debuggee tabId لاستهداف علامات التبويب التي تتضمّن sendCommand وتوجيه الأحداث بحلول tabId من عمليات استدعاء onEvent.

الأذونات

debugger

يجب الإفصاح عن إذن "debugger" في ملف بيان الإضافة لاستخدام واجهة برمجة التطبيقات هذه.

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

المفاهيم والاستخدام

بعد إرفاق واجهة برمجة التطبيقات chrome.debugger، تتيح لك إرسال بروتوكول أدوات مطوري البرامج في Chrome. (CDP) بهدف محدد. شرح CDP بالتفصيل خارج النطاق لهذه الوثائق. لمزيد من المعلومات حول CDP، راجع مستندات CDP الرسمية

الأهداف

تمثل الأهداف شيئًا يتم تصحيحه - قد يتضمن ذلك علامة تبويب، إطار iframe أو عامل. ويتم تحديد كل استهداف من خلال معرّف فريد عالمي (UUID) وله سمة مرتبطة النوع (مثل iframe وshared_worker وغير ذلك).

داخل الهدف، قد يكون هناك سياقات تنفيذ متعددة - على سبيل المثال: لا تحصل إطارات iframe على عملية استهداف فريد ولكن يتم تمثيلها على أنها سياقات مختلفة يمكن الوصول إليها من هدف واحد.

النطاقات المحظورة

لأسباب تتعلّق بالأمان، لا تتيح واجهة برمجة التطبيقات chrome.debugger API الوصول إلى جميع "أدوات مطوري البرامج في Chrome". ونطاقات البروتوكول. النطاقات المتاحة هي: Accessibility (تسهيل الاستخدام). التدقيق وCacheStorage ووحدة التحكّم CSS وقاعدة بيانات وبرنامج تصحيح الأخطاء وDOM DOMDebugger، DOMSnapshot، المحاكاة، جلب، IO، الإدخال، أداة الفحص، السجلّ، الشبكة، التراكب، الصفحة، الأداء، الملف الشخصي، وقت التشغيل، مساحة التخزين، الهدف، التتبُّع، WebAudio، وWebAuthn

العمل على الإطارات

لا يتم ربط الإطارات بالأهداف. في علامة تبويب واحدة، قد تشترك عدة إطارات عملية واحدة في نفس الهدف ولكنها تستخدم عنوان بريد إلكتروني مختلف سياق التنفيذ. ومن ناحية أخرى، قد يكون الاستهداف الجديد تم إنشاؤه لإطار iframe خارج نطاق المعالجة.

للإرفاق بجميع الإطارات، يجب التعامل مع كل نوع من أنواع الإطارات بشكل منفصل:

  • الاستماع إلى حدث Runtime.executionContextCreated لتحديد الشخصيات الجديدة سياقات التنفيذ المرتبطة بإطارات العملية نفسها.

  • اتّبِع خطوات إرفاقها بأهداف ذات صلة من أجل تحديد الإطارات خارج المعالجة.

بعد الربط بأحد الأهداف، قد تحتاج إلى الربط باستهدافات أخرى ذات صلة. بما في ذلك الإطارات الثانوية خارج المعالجة أو العاملين المرتبطين بها.

بدءًا من الإصدار 125 من Chrome، تتيح واجهة برمجة تطبيقات chrome.debugger الجلسات المسطحة. هذا النمط تتيح لك إضافة أهداف أخرى كعناصر ثانوية إلى جلسة برنامج تصحيح الأخطاء الرئيسية مراسلتهم بدون الحاجة إلى الاتصال برقم chrome.debugger.attach آخر. بدلاً من ذلك، يمكنك إضافة السمة sessionId عند طلب الرقم chrome.debugger.sendCommand تحديد الهدف الفرعي الذي تريد إرسال أمر إليه.

للإرفاق التلقائي بالإطارات الثانوية خارج المعالجة، أضف أولاً مستمعًا إلى الحدث Target.attachedToTarget:

chrome.debugger.onEvent.addListener((source, method, params) => {
  if (method === "Target.attachedToTarget") {
    // `source` identifies the parent session, but we need to construct a new
    // identifier for the child session
    const session = { ...source, sessionId: params.sessionId };

    // Call any needed CDP commands for the child session
    await chrome.debugger.sendCommand(session, "Runtime.enable");
  }
});

بعد ذلك، يمكنك تفعيل الإرفاق التلقائي من خلال إرسال الأمر Target.setAutoAttach مع تم ضبط الخيار flatten على true:

await chrome.debugger.sendCommand({ tabId }, "Target.setAutoAttach", {
  autoAttach: true,
  waitForDebuggerOnStart: false,
  flatten: true,
  filter: [{ type: "iframe", exclude: false }]
});

أمثلة

لتجربة واجهة برمجة التطبيقات هذه، يجب تثبيت مثال على واجهة برمجة التطبيقات لبرنامج تصحيح الأخطاء من chrome-extension-samples. المستودع.

الأنواع

Debuggee

معرّف تصحيح الأخطاء. يجب تحديد معرّف TabId أو رقم تعريف الإضافة أو targetId

أماكن إقامة

  • extensionId

    سلسلة اختيارية

    رقم تعريف الإضافة التي تريد تصحيح أخطائها لا يمكن الربط بصفحة خلفية الإضافة إلا عند استخدام مفتاح سطر الأوامر --silent-debugger-extension-api.

  • tabId

    الرقم اختياري

    رقم تعريف علامة التبويب التي تريد تصحيح أخطائها.

  • targetId

    سلسلة اختيارية

    رقم التعريف المبهم الخاص بهدف تصحيح الأخطاء.

DebuggerSession

الإصدار 125 من Chrome أو الإصدارات الأحدث

معرّف جلسة برنامج تصحيح الأخطاء يجب تحديد أحد TabId أو extensionId أو targetId. بالإضافة إلى ذلك، يمكن توفير رقم تعريف جلسة اختياري. إذا تم تحديد رقم تعريف الجلسة للوسيطات المُرسَلة من onEvent، يعني ذلك أنّ الحدث يأتي من جلسة بروتوكول فرعي ضمن جلسة تصحيح أخطاء الجذر. إذا تم تحديد sessionId عند تمريره إلى sendCommand، سيتم استهداف جلسة بروتوكول فرعية ضمن جلسة تصحيح أخطاء الجذر.

أماكن إقامة

  • extensionId

    سلسلة اختيارية

    رقم تعريف الإضافة التي تريد تصحيح أخطائها لا يمكن الربط بصفحة خلفية الإضافة إلا عند استخدام مفتاح سطر الأوامر --silent-debugger-extension-api.

  • sessionId

    سلسلة اختيارية

    المعرّف المبهم لجلسة بروتوكول أدوات مطوري البرامج في Chrome يتم تحديد جلسة فرعية ضمن جلسة الجذر التي تم تحديدها بواسطة tabId أو extensionId أو targetId.

  • tabId

    الرقم اختياري

    رقم تعريف علامة التبويب التي تريد تصحيح أخطائها.

  • targetId

    سلسلة اختيارية

    رقم التعريف المبهم الخاص بهدف تصحيح الأخطاء.

DetachReason

الإصدار 44 من Chrome أو الإصدارات الأحدث

سبب إنهاء الاتصال

Enum

"target_closed"

"canceled_by_user"

TargetInfo

تصحيح معلومات الهدف

أماكن إقامة

  • مرفق

    منطقي

    صحيح إذا سبق إرفاق برنامج تصحيح الأخطاء.

  • extensionId

    سلسلة اختيارية

    معرّف الإضافة، الذي يتم تحديده إذا كان النوع = 'background_page'.

  • faviconUrl

    سلسلة اختيارية

    عنوان URL الخاص بالرمز المفضّل المستهدف

  • id

    سلسلة

    معرّف الهدف

  • tabId

    الرقم اختياري

    معرّف علامة التبويب، يتم تحديده إذا كان النوع == 'page'.

  • title

    سلسلة

    عنوان الصفحة المستهدفة.

  • كتابة

    نوع الاستهداف

  • url

    سلسلة

    عنوان URL المستهدف.

TargetInfoType

الإصدار 44 من Chrome أو الإصدارات الأحدث

نوع الاستهداف

Enum

"الصفحة"

"background_page"

"عامل"

"other"

الطُرق

attach()

وعود
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)

يُرفق برنامج تصحيح الأخطاء بالهدف المحدّد.

المعلمات

  • الاستهداف

    تصحيح الأخطاء المستهدف الذي تريد إرفاقه.

  • requiredVersion

    سلسلة

    إصدار بروتوكول تصحيح الأخطاء المطلوب ("0.1"). لا يمكن إرفاق أحدهما ببرنامج تصحيح الأخطاء إلا إذا كان هناك إصدار رئيسي مطابق وإصدار ثانوي أكبر أو يساوي. يمكنك الحصول على قائمة بإصدارات البروتوكول من هنا.

  • رد الاتصال

    الدالة اختيارية

    تظهر المَعلمة callback على النحو التالي:

    () => void

المرتجعات

  • وعود <باطلة>

    الإصدار 96 من Chrome أو الإصدارات الأحدث

    تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير معاودة الاتصال. التوافق مع الأنظمة القديمة. لا يمكنك استخدام كلتيهما في نفس استدعاء الدالة. تشير رسالة الأشكال البيانية يتم حل الوعد بنفس النوع الذي يتم إرساله إلى معاودة الاتصال.

detach()

وعود
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)

يفصل برنامج تصحيح الأخطاء عن الهدف المحدّد.

المعلمات

  • الاستهداف

    تصحيح الأخطاء المستهدف الذي تريد فصله.

  • رد الاتصال

    الدالة اختيارية

    تظهر المَعلمة callback على النحو التالي:

    () => void

المرتجعات

  • وعود <باطلة>

    الإصدار 96 من Chrome أو الإصدارات الأحدث

    تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير معاودة الاتصال. التوافق مع الأنظمة القديمة. لا يمكنك استخدام كلتيهما في نفس استدعاء الدالة. تشير رسالة الأشكال البيانية يتم حل الوعد بنفس النوع الذي يتم إرساله إلى معاودة الاتصال.

getTargets()

وعود
chrome.debugger.getTargets(
  callback?: function,
)

تعرض قائمة أهداف تصحيح الأخطاء المتاحة.

المعلمات

  • رد الاتصال

    الدالة اختيارية

    تظهر المَعلمة callback على النحو التالي:

    (result: TargetInfo[]) => void

    • نتيجة

      مصفوفة من عناصر TargetInfo المقابلة لأهداف تصحيح الأخطاء المتاحة.

المرتجعات

  • Promise&lt;TargetInfo[]&gt;

    الإصدار 96 من Chrome أو الإصدارات الأحدث

    تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير معاودة الاتصال. التوافق مع الأنظمة القديمة. لا يمكنك استخدام كلتيهما في نفس استدعاء الدالة. تشير رسالة الأشكال البيانية يتم حل الوعد بنفس النوع الذي يتم إرساله إلى معاودة الاتصال.

sendCommand()

وعود
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)

يتم إرسال الأمر المحدّد إلى هدف تصحيح الأخطاء.

المعلمات

  • الاستهداف

    هدف تصحيح الأخطاء الذي تريد إرسال الأمر إليه.

  • method

    سلسلة

    اسم الطريقة. يجب أن تكون إحدى الطرق التي حدّدها بروتوكول تصحيح الأخطاء عن بُعد.

  • commandParams

    الكائن اختياري

    كائن JSON مع مَعلمات الطلب يجب أن يتوافق هذا العنصر مع مخطّط مَعلمات تصحيح الأخطاء عن بُعد لطريقة معيّنة.

  • رد الاتصال

    الدالة اختيارية

    تظهر المَعلمة callback على النحو التالي:

    (result?: object) => void

    • نتيجة

      الكائن اختياري

      كائن JSON مع الاستجابة تختلف بنية الردّ حسب اسم الطريقة، ويتم تحديدها من خلال "المرتجعات". وصف الأمر في بروتوكول تصحيح الأخطاء عن بُعد.

المرتجعات

  • Promise&lt;object | غير محددة>

    الإصدار 96 من Chrome أو الإصدارات الأحدث

    تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير معاودة الاتصال. التوافق مع الأنظمة القديمة. لا يمكنك استخدام كلتيهما في نفس استدعاء الدالة. تشير رسالة الأشكال البيانية يتم حل الوعد بنفس النوع الذي يتم إرساله إلى معاودة الاتصال.

فعاليات

onDetach

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

يتم إطلاقه عندما ينهي المتصفِّح جلسة تصحيح الأخطاء لعلامة التبويب. يحدث ذلك عند إغلاق علامة التبويب أو عند استدعاء "أدوات مطوري البرامج في Chrome" لعلامة التبويب المرفقة.

المعلمات

onEvent

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

يتم الإطلاق عند حدث قياس حالة تصحيح أخطاء الهدف.

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

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

    • المصدر
    • method

      سلسلة

    • المَعلمات

      الكائن اختياري