تاریخ بهروزرسانی: 2026-09-25 رباتها: noindex
توضیحات
از API chrome.declarativeContent برای انجام اقداماتی بسته به محتوای یک صفحه، بدون نیاز به مجوز برای خواندن محتوای صفحه، استفاده کنید.
مجوزها
declarativeContentکاربرد
API محتوای اعلانی به شما این امکان را میدهد که بسته به URL یک صفحه وب، یا اگر یک انتخابگر CSS با عنصری در صفحه مطابقت داشته باشد، بدون نیاز به اضافه کردن مجوزهای میزبان یا تزریق اسکریپت محتوا ، عملکرد افزونه خود را فعال کنید.
از مجوز activeTab برای تعامل با یک صفحه پس از کلیک کاربر روی عملکرد افزونه استفاده کنید.
قوانین
قوانین شامل شرایط و اقدامات هستند. اگر هر یک از شرایط برقرار باشد، تمام اقدامات اجرا میشوند. این اقدامات setIcon و showAction هستند.
PageStateMatcher صفحات وب را تطبیق میدهد اگر و فقط اگر همه معیارهای ذکر شده رعایت شوند. میتواند با یک آدرس اینترنتی صفحه ، یک انتخابگر ترکیبی CSS یا وضعیت نشانهگذاری شده یک صفحه مطابقت داشته باشد. قانون زیر عملکرد افزونه را در صفحات گوگل هنگامی که فیلد رمز عبور وجود دارد، فعال میکند:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
برای فعال کردن عملکرد افزونه برای سایتهای گوگل دارای ویدیو، میتوانید شرط دوم را اضافه کنید، زیرا هر شرط برای شروع تمام اقدامات مشخص شده کافی است:
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' } | همه آدرسهای اینترنتی گوگل |
{ pathPrefix: '/docs/extensions' } | آدرسهای اینترنتی اسناد افزونه |
{ urlContains: 'developer.chrome.com' } | تمام آدرسهای اینترنتی اسناد توسعهدهندگان کروم |
همه معیارها به حروف کوچک و بزرگ حساس هستند. برای مشاهده لیست کامل معیارها، به UrlFilter مراجعه کنید.
تطبیق CSS
شرطهای PageStateMatcher.css باید انتخابگرهای مرکب باشند، به این معنی که نمیتوانید ترکیبکنندههایی مانند فاصله یا " > " را در انتخابگرهای خود بگنجانید. این به کروم کمک میکند تا انتخابگرها را با کارایی بیشتری مطابقت دهد.
| انتخابگرهای مرکب (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 فعلی در پروفایل کاربر را فراهم میکند. برای استفاده از این شرط، مجوز "bookmarks" باید در فایل manifest افزونه تعریف شود.
انواع
ImageDataType
به https://developer.mozilla.org/en-US/docs/Web/API/ImageData مراجعه کنید.
نوع
داده تصویر
PageStateMatcher
وضعیت یک صفحه وب را بر اساس معیارهای مختلف تطبیق میدهد.
خواص
- سازنده
باطل
تابع
constructorبه شکل زیر است:(arg: PageStateMatcher) => {...}
- ارگ
- بازده
- سیاساس
رشته[] اختیاری
در صورتی تطبیق مییابد که همهٔ انتخابگرهای CSS در آرایه با عناصر نمایش داده شده در یک فریم با مبدأ یکسان با فریم اصلی صفحه مطابقت داشته باشند. همهٔ انتخابگرهای این آرایه باید انتخابگرهای مرکب باشند تا تطبیق سریعتر شود. توجه: فهرست کردن صدها انتخابگر CSS یا فهرست کردن انتخابگرهای CSS که صدها بار در هر صفحه مطابقت دارند، میتواند سرعت وبسایتها را کاهش دهد.
- نشانهگذاری شده است
بولی اختیاری
کروم ۴۵+در صورتی که وضعیت بوکمارک شده صفحه برابر با مقدار مشخص شده باشد، تطبیق مییابد. به مجوز بوکمارکها نیاز دارد.
- آدرس صفحه
فیلتر آدرس (اختیاری)
در صورتی که شرایط
UrlFilterبرای URL سطح بالای صفحه برقرار باشد، تطبیق مییابد.
RequestContentScript
یک رویداد اعلانی که یک اسکریپت محتوا را تزریق میکند.
هشدار: این اقدام هنوز آزمایشی است و در نسخههای پایدار کروم پشتیبانی نمیشود.
خواص
- سازنده
باطل
تابع
constructorبه شکل زیر است:(arg: RequestContentScript) => {...}
- بازده
- همه فریمها
بولی اختیاری
اینکه آیا اسکریپت محتوا در تمام فریمهای صفحه منطبق اجرا شود یا فقط در فریم بالایی. مقدار پیشفرض
falseاست. - سیاساس
رشته[] اختیاری
نام فایلهای CSS که قرار است به عنوان بخشی از اسکریپت محتوا تزریق شوند.
- جیاس
رشته[] اختیاری
نام فایلهای جاوا اسکریپتی که قرار است به عنوان بخشی از اسکریپت محتوا تزریق شوند.
- matchAboutBlank
بولی اختیاری
اینکه آیا اسکریپت محتوا در
about:blankوabout:srcdocدرج شود یا خیر. مقدار پیشفرضfalseاست.
SetIcon
یک رویداد اعلانی که آیکون مربعی n-dip را برای اکشن صفحه یا اکشن مرورگر افزونه تنظیم میکند، در حالی که شرایط مربوطه برقرار باشد. این اکشن را میتوان بدون مجوزهای میزبان استفاده کرد، اما افزونه باید یک اکشن صفحه یا مرورگر داشته باشد.
دقیقاً یکی از imageData یا path باید مشخص شود. هر دو دیکشنریهایی هستند که تعدادی پیکسل را به یک نمایش تصویر نگاشت میکنند. نمایش تصویر در imageData یک شیء ImageData است؛ برای مثال، از یک عنصر canvas ، در حالی که نمایش تصویر در path مسیر یک فایل تصویر نسبت به مانیفست افزونه است. اگر پیکسلهای صفحه نمایش scale در یک پیکسل مستقل از دستگاه قرار بگیرند، از آیکون scale * n استفاده میشود. اگر آن scale وجود نداشته باشد، تصویر دیگری به اندازه مورد نیاز تغییر اندازه داده میشود.
خواص
- سازنده
باطل
تابع
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 API) متشکل از addRules ، removeRules و getRules را ارائه میدهد.