chrome.declarativeContent

الوصف

استخدام واجهة برمجة التطبيقات chrome.declarativeContent لاتّخاذ إجراءات استنادًا إلى محتوى الصفحة، بدون الحاجة إلى إذن لقراءة محتوى الصفحة

الأذونات

declarativeContent

المفاهيم وطريقة الاستخدام

تتيح لك واجهة برمجة التطبيقات Declarative Content API تفعيل إجراء الإضافة استنادًا إلى عنوان URL لصفحة ويب، أو إذا كان أحد أدوات اختيار CSS يتطابق مع عنصر في الصفحة، بدون الحاجة إلى إضافة أذونات المضيف أو إدخال نص محتوى.

استخدِم إذن activeTab للتفاعل مع صفحة بعد أن ينقر المستخدم على إجراء الإضافة.

القواعد

تتألف القواعد من الشروط والإجراءات. في حال استيفاء أيّ من الشروط، تتم تنفيذ جميع الإجراءات. الإجراءات هي setIcon() وshowAction().

يتطابق PageStateMatcher مع صفحات الويب في حال استيفاء جميع الشارَتَين الواردتَين أدناه فقط. ويمكن أن يتطابق مع عنوان URL للصفحة أو أداة اختيار مركبة لتنسيق CSS أو حالة وضع إشارة عليها للصفحة. تفعِّل القاعدة التالية إجراء الإضافة على صفحات Google عند توفُّر حقل كلمة مرور:

let rule1 = {
  conditions: [
    new chrome.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    })
  ],
  actions: [ new chrome.declarativeContent.ShowAction() ]
};

لتفعيل إجراء الإضافة أيضًا لمواقع Google الإلكترونية التي تتضمّن فيديو، يمكنك إضافة شرط ثاني، لأنّ كل شرط كافٍ لتشغيل جميع الإجراءات المحدّدة:

let rule2 = {
  conditions: [
    new chrome.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    }),
    new chrome.declarativeContent.PageStateMatcher({
      css: ["video"]
    })
  ],
  actions: [ new chrome.declarativeContent.ShowAction() ]
};

يختبر الحدث onPageChanged ما إذا كانت أي قاعدة تحتوي على شرط واحد على الأقل تم استيفاؤه وينفّذ الإجراءات. تظل القواعد محفوظة على مدار جلسات التصفّح، لذا خلال فترة تثبيت الإضافة، عليك أولاً استخدام removeRules لمحو القواعد المثبَّتة سابقًا ثم استخدام addRules لتسجيل قواعد جديدة.

chrome.runtime.onInstalled.addListener(function(details) {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([rule2]);
  });
});

باستخدام إذن activeTab، لن تعرض إضافتك أي تحذيرات بشأن الإذن، وعندما ينقر المستخدم على إجراء الإضافة، لن يتم تشغيلها إلا على الصفحات ذات الصلة.

مطابقة عناوين URL للصفحات

يتطابق PageStateMatcher.pageurl عند استيفاء معايير عنوان URL. تمثل المعايير الأكثر شيوعًا تسلسلًا من المضيف أو المسار أو عنوان URL، متبوعًا بـ "يحتوي على" أو "يساوي" أو "بادئة" أو "لاحقة". يحتوي الجدول التالي على بعض الأمثلة:

المعايير المطابقات
{ hostSuffix: 'google.com' } جميع عناوين URL في Google
{ pathPrefix: '/docs/extensions' } عناوين URL لمستندات الإضافة
{ urlContains: 'developer.chrome.com' } جميع عناوين URL لمستندات مطوّري Chrome

جميع المعايير حسّاسة لحالة الأحرف. للحصول على قائمة كاملة بالمعايير، راجِع UrlFilter.

مطابقة CSS

يجب أن تكون شروط PageStateMatcher.css محدّدات مركّبة، أي أنّه لا يمكنك تضمين مجمّعات مثل المسافة البيضاء أو ">" في المحدّدات. يساعد ذلك Chrome في مطابقة المحدّدات بكفاءة أكبر.

أدوات الاختيار المجمّعة (حسنًا) أدوات الاختيار المعقّدة (غير مقبولة)
a div p
iframe.special[src^='http'] p>span.highlight
ns|* p + ol
#abcd:checked p::first-line

لا تتطابق شروط CSS إلا مع العناصر المعروضة: إذا كان العنصر الذي يتطابق مع أداة الاختيار هو display:none أو كان أحد عناصره الرئيسية هو display:none، لن يؤدي ذلك إلى تصعيد الحالة إلى مطابقة. إنّ العناصر التي تمّ تصميمها باستخدام visibility:hidden أو التي تمّ وضعها خارج الشاشة أو التي تمّ إخفاؤها بواسطة عناصر أخرى يمكن أن تؤدي إلى مطابقة الحالة.

مطابقة الحالة التي تمت الإشارة إليها كمرجع

يسمح الشرط PageStateMatcher.isBookmarked بمطابقة حالة bookmarked لعنوان URL الحالي في الملف الشخصي للمستخدم. للاستفادة من هذا الشرط، يجب الإفصاح عن إذن "الإشارات المرجعية" في manifest الإضافة.

الأنواع

النوع

ImageData

PageStateMatcher

تطابق حالة صفحة ويب استنادًا إلى معايير مختلفة.

أماكن إقامة

  • constructor

    غير صالح

    تبدو الدالة constructor على النحو التالي:

    (arg: PageStateMatcher) => {...}

  • css

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

    يتطابق إذا كانت جميع أدوات اختيار CSS في الصفيف تتطابق مع العناصر المعروضة في إطار له المصدر نفسه مثل الإطار الرئيسي للصفحة. يجب أن تكون جميع المحدّدات في هذه الصفيف محدّدات مركبة لتسريع عملية المطابقة. ملاحظة: يمكن أن يؤدي إدراج مئات أدوات اختيار لغة CSS أو إدراج أدوات اختيار لغة CSS تتطابق مئات المرات في كل صفحة إلى إبطاء المواقع الإلكترونية.

  • isBookmarked

    منطقي اختياري

    Chrome 45 والإصدارات الأحدث

    تتطابق إذا كانت حالة وضع إشارة على الصفحة متساوية مع القيمة المحدّدة. يتطلب إذن الإشارات المرجعية.

  • pageUrl

    UrlFilter اختياري

    تتطابق إذا تم استيفاء شروط UrlFilter لعنوان URL من المستوى الأعلى للصفحة.

RequestContentScript

إجراء حدث تعريفي يُدخل نص محتوى

تحذير: لا يزال هذا الإجراء تجريبيًا وغير متاح في الإصدارات الثابتة من Chrome.

أماكن إقامة

  • constructor

    غير صالح

    تبدو الدالة constructor على النحو التالي:

    (arg: RequestContentScript) => {...}

  • allFrames

    منطقي اختياري

    ما إذا كان سيتم تشغيل نص المحتوى في جميع إطارات الصفحة المطابقة أو في الإطار العلوي فقط القيمة التلقائية هي false.

  • css

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

    أسماء ملفات CSS التي سيتم إدراجها كجزء من النص البرمجي للمحتوى

  • js

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

    أسماء ملفات JavaScript التي سيتم إدراجها كجزء من نص المحتوى

  • matchAboutBlank

    منطقي اختياري

    ما إذا كان سيتم إدراج النص البرمجي للمحتوى في about:blank وabout:srcdoc القيمة التلقائية هي false.

SetIcon

إجراء حدث تعريفي يضبط الرمز المربّع n-dip لـ إجراء الصفحة أو إجراء المتصفّح في الإضافة عند استيفاء الشروط المقابلة. يمكن استخدام هذا الإجراء بدون أذونات المضيف، ولكن يجب أن تتضمّن الإضافة إجراء صفحة أو متصفّح.

يجب تحديد سمة واحدة فقط من imageData أو path. وكلاهما قواميس تربط عددًا من وحدات البكسل بتمثيل صورة. تمثيل الصورة في imageData هو عنصر ImageData، على سبيل المثال، من عنصر canvas، في حين أنّ تمثيل الصورة في path هو مسار ملف صورة نسبةً إلى بيان الإضافة. إذا كانت وحدات بكسل الشاشة scale تتناسب مع وحدة بكسل مستقلة عن الجهاز، يتم استخدام الرمز scale * n. إذا لم يكن هذا المقياس متوفّرًا، تتم إعادة ضبط حجم صورة أخرى على الحجم المطلوب.

أماكن إقامة

  • constructor

    غير صالح

    تبدو الدالة constructor على النحو التالي:

    (arg: SetIcon) => {...}

  • imageData

    ImageData | object optional

    إما عنصر ImageData أو قاموس {size -> ImageData} يمثّل رمزًا ليتم ضبطه. إذا تم تحديد الرمز كقاموس، يتم اختيار الصورة المستخدَمة استنادًا إلى كثافة وحدات البكسل في الشاشة. إذا كان عدد وحدات البكسل في الصورة التي تتناسب مع وحدة مساحة شاشة واحدة يساوي scale، يتم اختيار صورة بحجم scale * n، حيث يكون n هو حجم الرمز في واجهة المستخدم. يجب تحديد صورة واحدة على الأقل. يُرجى العلم أنّ details.imageData = foo تعادل details.imageData = {'16': foo}.

ShowAction

Chrome 97 والإصدارات الأحدث

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

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

أماكن إقامة

  • constructor

    غير صالح

    تبدو الدالة constructor على النحو التالي:

    (arg: ShowAction) => {...}

ShowPageAction

تم إيقافها نهائيًا منذ الإصدار 97 من Chrome

يُرجى استخدام declarativeContent.ShowAction.

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

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

أماكن إقامة

الفعاليات

onPageChanged

توفّر Declarative Event API التي تتألف من addRules وremoveRules وgetRules.

الشروط