الوصف
تعمل واجهة برمجة التطبيقات 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
معرّف جلسة برنامج تصحيح الأخطاء يجب تحديد أحد TabId أو extensionId أو targetId. بالإضافة إلى ذلك، يمكن توفير رقم تعريف جلسة اختياري. إذا تم تحديد رقم تعريف الجلسة للوسيطات المُرسَلة من onEvent
، يعني ذلك أنّ الحدث يأتي من جلسة بروتوكول فرعي ضمن جلسة تصحيح أخطاء الجذر. إذا تم تحديد sessionId عند تمريره إلى sendCommand
، سيتم استهداف جلسة بروتوكول فرعية ضمن جلسة تصحيح أخطاء الجذر.
أماكن إقامة
-
extensionId
سلسلة اختيارية
رقم تعريف الإضافة التي تريد تصحيح أخطائها لا يمكن الربط بصفحة خلفية الإضافة إلا عند استخدام مفتاح سطر الأوامر
--silent-debugger-extension-api
. -
sessionId
سلسلة اختيارية
المعرّف المبهم لجلسة بروتوكول أدوات مطوري البرامج في Chrome يتم تحديد جلسة فرعية ضمن جلسة الجذر التي تم تحديدها بواسطة tabId أو extensionId أو targetId.
-
tabId
الرقم اختياري
رقم تعريف علامة التبويب التي تريد تصحيح أخطائها.
-
targetId
سلسلة اختيارية
رقم التعريف المبهم الخاص بهدف تصحيح الأخطاء.
DetachReason
سبب إنهاء الاتصال
Enum
"target_closed"
"canceled_by_user"
TargetInfo
تصحيح معلومات الهدف
أماكن إقامة
-
مرفق
منطقي
صحيح إذا سبق إرفاق برنامج تصحيح الأخطاء.
-
extensionId
سلسلة اختيارية
معرّف الإضافة، الذي يتم تحديده إذا كان النوع = 'background_page'.
-
faviconUrl
سلسلة اختيارية
عنوان URL الخاص بالرمز المفضّل المستهدف
-
id
سلسلة
معرّف الهدف
-
tabId
الرقم اختياري
معرّف علامة التبويب، يتم تحديده إذا كان النوع == 'page'.
-
title
سلسلة
عنوان الصفحة المستهدفة.
-
كتابة
نوع الاستهداف
-
url
سلسلة
عنوان URL المستهدف.
TargetInfoType
نوع الاستهداف
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<TargetInfo[]>
الإصدار 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<object | غير محددة>
الإصدار 96 من Chrome أو الإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير معاودة الاتصال. التوافق مع الأنظمة القديمة. لا يمكنك استخدام كلتيهما في نفس استدعاء الدالة. تشير رسالة الأشكال البيانية يتم حل الوعد بنفس النوع الذي يتم إرساله إلى معاودة الاتصال.
فعاليات
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
يتم إطلاقه عندما ينهي المتصفِّح جلسة تصحيح الأخطاء لعلامة التبويب. يحدث ذلك عند إغلاق علامة التبويب أو عند استدعاء "أدوات مطوري البرامج في Chrome" لعلامة التبويب المرفقة.
المعلمات
-
رد الاتصال
دالة
تظهر المَعلمة
callback
على النحو التالي:(source: Debuggee, reason: DetachReason) => void
-
المصدر
-
السبب
-
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
يتم الإطلاق عند حدث قياس حالة تصحيح أخطاء الهدف.
المعلمات
-
رد الاتصال
دالة
تظهر المَعلمة
callback
على النحو التالي:(source: DebuggerSession, method: string, params?: object) => void
-
المصدر
-
method
سلسلة
-
المَعلمات
الكائن اختياري
-