refresh date: 2026-09-25 robots: noindex
شرح
از chrome.declarativeContent API برای انجام اقدامات براساس محتوای صفحه استفاده کنید، بدون اینکه به اجازه خواندن محتوای صفحه نیاز داشته باشید.
اجازهها
declarativeContentکاربرد
Declarative Content API به شما امکان میدهد کنش افزونهتان را بسته به نشانی وب صفحه وب یا درصورت مطابقت انتخابگر CSS با عنصری در صفحه فعال کنید، بدون اینکه نیاز باشد اجازههای میزبان را اضافه کنید یا اسکریپت محتوا تزریق کنید.
از اجازه activeTab برای تعامل با صفحه پساز کلیک کردن کاربر روی کنش افزونه استفاده کنید.
قوانین
قوانین شامل شرایط و کنشها است. اگر هریک از شرایط برآورده شود، همه کنشها
اجرا میشود. کنشها عبارتاند از setIcon و showAction.
PageStateMatcher فقط درصورتی با صفحههای وب مطابقت دارد که همه معیارهای فهرستشده برآورده شده باشد. میتواند با نشانی وب صفحه، گزینشگر ترکیبی 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، افزونه شما هیچ هشدار اجازهای نمایش نخواهد داد و وقتی کاربر روی کنش افزونه کلیک میکند، فقط در صفحههای مربوطه اجرا خواهد شد.
مطابقت نشانی وب صفحه
وقتی معیارهای نشانی وب برآورده شود، PageStateMatcher.pageurl مطابقت دارد. رایجترین معیارها عبارتند از الحاق میزبان، مسیر، یا نشانی وب، و بهدنبال آن «شامل»، «برابر با»، «پیشوند»، یا «پسوند». جدول زیر حاوی چند نمونه است:
| معیارها | موارد منطبق |
|---|---|
{ hostSuffix: 'google.com' } |
همه نشانیهای وب Google |
{ pathPrefix: '/docs/extensions' } |
نشانیهای وب اسناد افزونه |
{ urlContains: 'developer.chrome.com' } |
همه نشانیهای وب اسناد توسعهدهندگان 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 امکان مطابقت دادن وضعیت نشانکگذاریشده نشانی وب فعلی را در نمایه کاربر فراهم میکند. برای استفاده از این شرط،
اجازه «نشانکها» باید در مانیفست افزونه اعلام شود.
انواع
ImageDataType
https://developer.mozilla.org/en-US/docs/Web/API/ImageData را ببینید.
نوع
ImageData
PageStateMatcher
وضعیت صفحه وب را براساس معیارهای مختلف مطابقت میدهد.
مشخصات
-
سازنده
باطل کردن
تابع
constructorبهصورت زیر است:(arg: PageStateMatcher) => {...}
-
arg
-
returns
-
-
css
رشته[] اختیاری
اگر همه انتخابگرهای CSS در آرایه با عناصر نمایشدادهشده در قابی با همان مبدأ قاب اصلی صفحه مطابقت داشته باشند، مطابقت دارد. همه انتخابکنندهها در این آرایه باید انتخابکنندههای مرکب باشند تا تطابق سریعتر انجام شود. توجه: فهرست کردن صدها گزینشگر CSS یا فهرست کردن گزینشگرهای CSS که صدها بار در هر صفحه مطابقت دارند میتواند سرعت وبسایتها را کاهش دهد.
-
isBookmarked
بولی اختیاری
Chrome نسخه ۴۵ به بالااگر وضعیت نشانکگذاریشده صفحه با مقدار مشخصشده برابر باشد، مطابقت دارد. به اجازه نشانکها نیاز دارد.
-
pageUrl
UrlFilter اختیاری
اگر شرایط
UrlFilterبرای نشانی وب سطح بالای صفحه برآورده شود، مطابقت دارد.
RequestContentScript
کنش رویداد اعلانی که اسکریپت محتوا را تزریق میکند.
هشدار: این کنش هنوز آزمایشی است و در نسخههای پایدار Chrome پشتیبانی نمیشود.
مشخصات
-
سازنده
باطل کردن
تابع
constructorبهصورت زیر است:(arg: RequestContentScript) => {...}
-
returns
-
-
allFrames
بولی اختیاری
اینکه متن محتوا در همه قابهای صفحه منطبق اجرا شود یا فقط در قاب بالایی. پیشفرض
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) => {...}
-
arg
-
returns
-
-
imageData
ImageData | شیء اختیاری
یک شیء
ImageDataیا یک واژهنامه {size -> ImageData} که نشاندهنده نمادی است که باید تنظیم شود. اگر نماد بهعنوان فرهنگ لغت مشخص شده باشد، تصویر استفادهشده براساس تراکم پیکسلی صفحهنمایش انتخاب میشود. اگر تعداد پیکسلهای تصویر که در یک واحد فضای صفحه جا میشود برابر باscaleباشد، تصویری با اندازهscale * nانتخاب میشود که در آن n اندازه نماد در واسط کاربر است. حداقل یک تصویر باید مشخص شود. توجه داشته باشید کهdetails.imageData = fooمعادلdetails.imageData = {'16': foo}است.
ShowAction
کنش رویداد اعلانی که کنش نوارابزار افزونه را در حالت فعال قرار میدهد، درحالیکه شرایط مربوطه برآورده شده است. این کنش را میتوان بدون اجازههای میزبان استفاده کرد. اگر افزونه اجازه activeTab را داشته باشد، کلیک کردن روی کنش صفحه دسترسی به برگه فعال را اعطا میکند.
در صفحههایی که شرایط برآورده نمیشود، کنش نوارابزار افزونه خاکستری خواهد بود و کلیک کردن روی آن بهجای راهاندازی کنش، منوِ بافت را باز میکند.
مشخصات
-
سازنده
باطل کردن
تابع
constructorبهصورت زیر است:(arg: ShowAction) => {...}
-
arg
-
returns
-
ShowPageAction
لطفاً از declarativeContent.ShowAction استفاده کنید.
یک کنش رویداد اعلانی که کنش صفحه افزونه را در حالت فعال قرار میدهد، درحالیکه شرایط مربوطه برآورده شده است. این کنش را میتوان بدون اجازههای میزبان استفاده کرد، اما افزونه باید کنش صفحه داشته باشد. اگر افزونه اجازه activeTab را داشته باشد، کلیک کردن روی کنش صفحه دسترسی به برگه فعال را اعطا میکند.
در صفحههایی که شرایط برآورده نمیشود، کنش نوارابزار افزونه خاکستری خواهد بود و کلیک کردن روی آن بهجای راهاندازی کنش، منوِ بافت را باز میکند.
مشخصات
-
سازنده
باطل کردن
تابع
constructorبهصورت زیر است:(arg: ShowPageAction) => {...}
-
arg
-
returns
-
رویدادها
onPageChanged
Declarative Event API را که شامل addRules، removeRules، و getRules است ارائه میدهد.