توضیحات
از chrome.declarativeContent
API برای انجام اقداماتی بسته به محتوای یک صفحه، بدون نیاز به مجوز برای خواندن محتوای صفحه استفاده کنید.
مجوزها
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 است و به دنبال آن Contains، Equals، Prefix یا Suffix قرار میگیرد. جدول زیر شامل چند نمونه است:
معیارها | مسابقات |
---|---|
{ hostSuffix: 'google.com' } | همه URL های گوگل |
{ pathPrefix: '/docs/extensions' } | URL اسناد برنامه افزودنی |
{ urlContains: 'developer.chrome.com' } | همه توسعهدهندگان کروم نشانیهای وب را اسناد میکنند |
همه معیارها به حروف کوچک و بزرگ حساس هستند. برای فهرست کامل معیارها، UrlFilter را ببینید.
تطبیق CSS
شرایط PageStateMatcher.css
باید انتخابگرهای ترکیبی باشند، به این معنی که نمیتوانید ترکیبکنندههایی مانند فضای خالی یا " >
" را در انتخابگرهای خود قرار دهید. این به Chrome کمک میکند تا انتخابکنندهها را کارآمدتر مطابقت دهد.
انتخابگرهای ترکیبی (OK) | انتخابگرهای پیچیده (خوب نیست) |
---|---|
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
امکان تطبیق وضعیت نشانک شده URL فعلی در نمایه کاربر را فراهم می کند. برای استفاده از این شرط، مجوز «نشانکها» باید در مانیفست پسوند اعلام شود.
انواع
ImageDataType
به https://developer.mozilla.org/en-US/docs/Web/API/ImageData مراجعه کنید.
تایپ کنید
ImageData
PageStateMatcher
با وضعیت یک صفحه وب بر اساس معیارهای مختلف مطابقت دارد.
خواص
- سازنده
باطل
تابع
constructor
به صورت زیر است:(arg: PageStateMatcher) => {...}
- ارگ
- برمی گرداند
- css
رشته[] اختیاری است
در صورتی که همه انتخابگرهای CSS در آرایه با عناصر نمایش داده شده در فریمی با منشأ همان قاب اصلی صفحه مطابقت داشته باشند، مطابقت دارد. همه انتخابگرها در این آرایه باید انتخابگرهای مرکب باشند تا تطبیق سرعت بیشتری داشته باشد. توجه: فهرست کردن صدها انتخابگر CSS یا فهرست کردن انتخابگرهای CSS که صدها بار در هر صفحه مطابقت دارند، میتواند سرعت وبسایتها را کاهش دهد.
- نشانه گذاری شده است
بولی اختیاری
Chrome 45+در صورتی مطابقت دارد که حالت نشانک شده صفحه با مقدار مشخص شده برابر باشد. به اجازه نشانک ها نیاز دارد.
- آدرس صفحه
UrlFilter اختیاری است
مطابق با شرایط
UrlFilter
برای URL سطح بالای صفحه است.
RequestContentScript
کنش رویداد اعلامی که یک اسکریپت محتوا را تزریق می کند.
هشدار: این اقدام هنوز آزمایشی است و در ساختهای پایدار Chrome پشتیبانی نمیشود.
خواص
- سازنده
باطل
تابع
constructor
به صورت زیر است:(arg: RequestContentScript) => {...}
- برمی گرداند
- همه فریم ها
بولی اختیاری
خواه اسکریپت محتوا در تمام فریم های صفحه مطابقت اجرا شود یا فقط در فریم بالایی. پیش فرض
false
است. - css
رشته[] اختیاری است
نام فایل های CSS که باید به عنوان بخشی از اسکریپت محتوا تزریق شوند.
- js
رشته[] اختیاری است
نام فایل های جاوا اسکریپت که باید به عنوان بخشی از اسکریپت محتوا تزریق شود.
- matchAboutBlank
بولی اختیاری
درج اسکریپت محتوا در
about:blank
وabout:srcdoc
. پیش فرضfalse
است.
SetIcon
کنش رویداد اعلامی که نماد مربع n-dip را برای عملکرد صفحه برنامه افزودنی یا عملکرد مرورگر تنظیم می کند در حالی که شرایط مربوطه وجود دارد. این عملکرد را می توان بدون مجوز میزبان استفاده کرد، اما برنامه افزودنی باید دارای یک صفحه یا عملکرد مرورگر باشد.
دقیقاً یکی از imageData
یا path
باید مشخص شود. هر دو دیکشنری هستند که تعدادی پیکسل را به یک نمایش تصویر نگاشت می کنند. نمایش تصویر در imageData
یک شی ImageData است. برای مثال، از یک عنصر canvas
، در حالی که نمایش تصویر در path
، مسیر یک فایل تصویری نسبت به مانیفست پسوند است. اگر پیکسل های صفحه scale
در یک پیکسل مستقل از دستگاه قرار می گیرند، از نماد scale * n
استفاده می شود. اگر آن مقیاس وجود نداشته باشد، اندازه تصویر دیگر به اندازه مورد نیاز تغییر می کند.
خواص
- سازنده
باطل
تابع
constructor
به صورت زیر است:(arg: SetIcon) => {...}
- ارگ
- برمی گرداند
- داده های تصویری
ImageData | شی اختیاری
یک شی
ImageData
یا یک فرهنگ لغت {size -> ImageData} که نمادی را نشان می دهد که باید تنظیم شود. اگر نماد به عنوان فرهنگ لغت مشخص شده باشد، تصویر مورد استفاده بسته به تراکم پیکسلی صفحه نمایش انتخاب می شود. اگر تعداد پیکسلهای تصویری که در یک واحد فضای صفحه نمایش قرار میگیرند، برابر باscale
باشد، تصویری باscale * n
انتخاب میشود که n اندازه نماد در رابط کاربری است. حداقل یک تصویر باید مشخص شود. توجه داشته باشید کهdetails.imageData = foo
معادلdetails.imageData = {'16': foo}
است.
ShowAction
یک اقدام رویداد اعلامی که عملکرد نوار ابزار برنامه افزودنی را در حالی که شرایط مربوطه برآورده می شود، به حالت فعال تنظیم می کند. این عمل را می توان بدون مجوز میزبان استفاده کرد. اگر برنامه افزودنی دارای مجوز activeTab باشد، با کلیک بر روی عملکرد صفحه، به برگه فعال دسترسی میدهید.
در صفحاتی که شرایط برآورده نمیشوند، عملکرد نوار ابزار برنامه افزودنی در مقیاس خاکستری خواهد بود و با کلیک بر روی آن، بهجای فعال کردن اقدام، منوی زمینه باز میشود.
خواص
- سازنده
باطل
تابع
constructor
به صورت زیر است:(arg: ShowAction) => {...}
- ارگ
- برمی گرداند
ShowPageAction
لطفاً از declarativeContent.ShowAction
استفاده کنید.
یک اقدام رویداد اعلامی که عملکرد صفحه برنامه افزودنی را در حالی که شرایط مربوطه برآورده می شود، به حالت فعال تنظیم می کند. این عملکرد را می توان بدون مجوزهای میزبان استفاده کرد، اما برنامه افزودنی باید دارای یک عملکرد صفحه باشد. اگر برنامه افزودنی دارای مجوز activeTab باشد، با کلیک بر روی عملکرد صفحه، به برگه فعال دسترسی میدهید.
در صفحاتی که شرایط برآورده نمیشوند، عملکرد نوار ابزار برنامه افزودنی در مقیاس خاکستری خواهد بود و با کلیک بر روی آن، بهجای فعال کردن اقدام، منوی زمینه باز میشود.
خواص
- سازنده
باطل
تابع
constructor
به صورت زیر است:(arg: ShowPageAction) => {...}
- ارگ
- برمی گرداند
رویدادها
onPageChanged
API Declarative Event متشکل از addRules
، removeRules
و getRules
را ارائه می دهد.