الوصف
استخدام واجهة برمجة التطبيقات 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 الإضافة.
الأنواع
ImageDataType
اطّلِع على https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
النوع
ImageData
PageStateMatcher
تطابق حالة صفحة ويب استنادًا إلى معايير مختلفة.
أماكن إقامة
-
constructor
غير صالح
تبدو الدالة
constructor
على النحو التالي:(arg: PageStateMatcher) => {...}
-
arg
-
returns
-
-
css
سلسلة اختيارية
يتطابق إذا كانت جميع أدوات اختيار CSS في الصفيف تتطابق مع العناصر المعروضة في إطار له المصدر نفسه مثل الإطار الرئيسي للصفحة. يجب أن تكون جميع المحدّدات في هذه الصفيف محدّدات مركبة لتسريع عملية المطابقة. ملاحظة: يمكن أن يؤدي إدراج مئات أدوات اختيار لغة CSS أو إدراج أدوات اختيار لغة CSS تتطابق مئات المرات في كل صفحة إلى إبطاء المواقع الإلكترونية.
-
isBookmarked
منطقي اختياري
Chrome 45 والإصدارات الأحدثتتطابق إذا كانت حالة وضع إشارة على الصفحة متساوية مع القيمة المحدّدة. يتطلب إذن الإشارات المرجعية.
-
pageUrl
UrlFilter اختياري
تتطابق إذا تم استيفاء شروط
UrlFilter
لعنوان URL من المستوى الأعلى للصفحة.
RequestContentScript
إجراء حدث تعريفي يُدخل نص محتوى
تحذير: لا يزال هذا الإجراء تجريبيًا وغير متاح في الإصدارات الثابتة من Chrome.
أماكن إقامة
-
constructor
غير صالح
تبدو الدالة
constructor
على النحو التالي:(arg: RequestContentScript) => {...}
-
returns
-
-
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) => {...}
-
arg
-
returns
-
-
imageData
ImageData | object optional
إما عنصر
ImageData
أو قاموس {size -> ImageData} يمثّل رمزًا ليتم ضبطه. إذا تم تحديد الرمز كقاموس، يتم اختيار الصورة المستخدَمة استنادًا إلى كثافة وحدات البكسل في الشاشة. إذا كان عدد وحدات البكسل في الصورة التي تتناسب مع وحدة مساحة شاشة واحدة يساويscale
، يتم اختيار صورة بحجمscale * n
، حيث يكون n هو حجم الرمز في واجهة المستخدم. يجب تحديد صورة واحدة على الأقل. يُرجى العلم أنّdetails.imageData = foo
تعادلdetails.imageData = {'16': foo}
.
ShowAction
إجراء حدث تعريفي يضبط إجراء شريط أدوات الإضافة على حالة مفعَّلة عند استيفاء الشروط المقابلة. يمكن استخدام هذا الإجراء بدون أذونات المضيف. إذا كانت الإضافة تملك إذن activeTab، يؤدي النقر على إجراء الصفحة إلى منح إذن الوصول إلى علامة التبويب النشطة.
في الصفحات التي لا يتم استيفاء الشروط فيها، سيكون إجراء شريط أدوات الإضافة باللون الرمادي، وسيؤدي النقر عليه إلى فتح قائمة السياقات بدلاً من تنفيذ الإجراء.
أماكن إقامة
-
constructor
غير صالح
تبدو الدالة
constructor
على النحو التالي:(arg: ShowAction) => {...}
-
arg
-
returns
-
ShowPageAction
يُرجى استخدام declarativeContent.ShowAction
.
إجراء حدث تعريفي يضبط إجراء الصفحة في الإضافة على حالة مفعَّلة عند استيفاء الشروط المقابلة. يمكن استخدام هذا الإجراء بدون أذونات المضيف، ولكن يجب أن تتضمّن الإضافة إجراء صفحة. إذا كانت الإضافة تملك إذن activeTab، يؤدي النقر على إجراء الصفحة إلى منح إذن الوصول إلى علامة التبويب النشطة.
في الصفحات التي لا يتم استيفاء الشروط فيها، سيكون إجراء شريط أدوات الإضافة باللون الرمادي، وسيؤدي النقر عليه إلى فتح قائمة السياقات بدلاً من تنفيذ الإجراء.
أماكن إقامة
-
constructor
غير صالح
تبدو الدالة
constructor
على النحو التالي:(arg: ShowPageAction) => {...}
-
arg
-
returns
-
الفعاليات
onPageChanged
توفّر Declarative Event API التي تتألف من addRules
وremoveRules
وgetRules
.