توضیحات
از chrome.contentSettings
API برای تغییر تنظیماتی که کنترل میکنند وبسایتها میتوانند از ویژگیهایی مانند کوکیها، جاوا اسکریپت و افزونهها استفاده کنند استفاده کنید. به طور کلی تر، تنظیمات محتوا به شما این امکان را می دهد که رفتار Chrome را بر اساس هر سایت به جای جهانی سفارشی کنید.
مجوزها
contentSettings
برای استفاده از API باید مجوز "contentSettings"
در مانیفست برنامه افزودنی خود اعلام کنید. به عنوان مثال:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
مفاهیم و کاربرد
الگوهای تنظیم محتوا
میتوانید از الگوها برای تعیین وبسایتهایی که هر تنظیم محتوا بر آن تأثیر میگذارد استفاده کنید. به عنوان مثال، https://*.youtube.com/*
youtube.com و همه زیردامنه های آن را مشخص می کند. نحو الگوهای تنظیم محتوا مانند الگوهای مطابقت است، با چند تفاوت:
- برای نشانیهای اینترنتی
http
،https
وftp
، مسیر باید یک علامت عام (/*
) باشد. برای URL هایfile
، مسیر باید به طور کامل مشخص شده باشد و نباید دارای حروف عام باشد. - برخلاف الگوهای تطبیق، الگوهای تنظیم محتوا می توانند شماره پورت را مشخص کنند. اگر شماره پورت مشخص شده باشد، این الگو فقط با وبسایتهای دارای آن پورت مطابقت دارد. اگر شماره پورتی مشخص نشده باشد، الگو با تمام پورت ها مطابقت دارد.
تقدم الگو
وقتی بیش از یک قانون تنظیم محتوا برای یک سایت خاص اعمال میشود، قانون با الگوی خاصتر اولویت دارد.
به عنوان مثال، الگوهای زیر بر اساس اولویت مرتب شده اند:
-
https://www.example.com/*
-
https://*.example.com/*
(منطبق با example.com و همه زیردامنه ها) -
<all_urls>
(با هر URL مطابقت دارد)
سه نوع حروف عام بر خاص بودن یک الگو تأثیر می گذارد:
- حروف عام در پورت (به عنوان مثال
https://www.example.com:*/*
) - حروف عام در طرح (به عنوان مثال
*://www.example.com:123/*
) - حروف عام در نام میزبان (به عنوان مثال
https://*.example.com:123/*
)
اگر یک الگو در یک قسمت از الگوی دیگر خاص تر باشد اما در قسمت دیگر خاص تر باشد، قسمت های مختلف به ترتیب زیر بررسی می شوند: نام میزبان، طرح، پورت. به عنوان مثال، الگوهای زیر بر اساس اولویت مرتب شده اند:
-
https://www.example.com:*/*
نام میزبان و طرح را مشخص می کند. -
*:/www.example.com:123/*
زیاد نیست، زیرا اگرچه نام میزبان را مشخص می کند، اما طرح را مشخص نمی کند. -
https://*.example.com:123/*
پایین تر، زیرا اگرچه پورت و طرح را مشخص می کند، اما در نام میزبان دارای علامت عام است.
الگوهای اولیه و ثانویه
نشانی وب در نظر گرفته شده هنگام تصمیم گیری برای اعمال تنظیمات محتوا به نوع محتوا بستگی دارد. برای مثال، تنظیمات contentSettings.notifications
بر اساس URL نشان داده شده در omnibox است. این نشانی اینترنتی URL "اولیه" نامیده می شود.
برخی از انواع محتوا می توانند URL های اضافی را در نظر بگیرند. برای مثال، اینکه آیا یک سایت مجاز به تنظیم یک contentSettings.cookies
است یا خیر، بر اساس URL درخواست HTTP (که در این مورد URL اصلی است) و همچنین URL نشان داده شده در omnibox (که "ثانویه" نامیده می شود، تصمیم گیری می شود. " URL).
اگر قوانین چندگانه دارای الگوهای اولیه و ثانویه باشند، قاعده با الگوی اولیه خاصتر اولویت دارد. اگر چندین قانون دارای الگوی اولیه یکسانی باشند، قاعده با الگوی ثانویه خاصتر اولویت دارد. برای مثال، لیست زیر از جفتهای الگوی اولیه/ثانویه بر اساس اولویت مرتب شدهاند:
تقدم | الگوی اولیه | الگوی ثانویه |
---|---|---|
1 | https://www.moose.com/* ، | https://www.wombat.com/* |
2 | https://www.moose.com/* ، | <all_urls> |
3 | <all_urls> ، | https://www.wombat.com/* |
4 | <all_urls> ، | <all_urls> |
الگوهای ثانویه برای تنظیمات محتوای تصاویر پشتیبانی نمی شوند.
شناسه های منابع
شناسههای منبع به شما امکان میدهند تنظیمات محتوا را برای زیرگروههای خاصی از یک نوع محتوا مشخص کنید. در حال حاضر، تنها نوع محتوایی که از شناسههای منبع پشتیبانی میکند contentSettings.plugins
است که در آن شناسه منبع، افزونه خاصی را شناسایی میکند. هنگام اعمال تنظیمات محتوا، ابتدا تنظیمات مربوط به افزونه خاص بررسی می شود. اگر هیچ تنظیماتی برای پلاگین خاص یافت نشد، تنظیمات محتوای عمومی برای افزونه ها بررسی می شود.
به عنوان مثال، اگر یک قانون تنظیم محتوا دارای شناسه منبع adobe-flash-player
و الگوی <all_urls>
باشد، بر یک قانون بدون شناسه منبع و الگوی https://www.example.com/*
ارجحیت دارد، حتی اگر آن الگو مشخص تر باشد.
با فراخوانی متد contentSettings.ContentSetting.getResourceIdentifiers()
میتوانید فهرستی از شناسههای منبع را برای یک نوع محتوا دریافت کنید. فهرست بازگشتی میتواند با مجموعه افزونههای نصبشده در دستگاه کاربر تغییر کند، اما Chrome سعی میکند شناسهها را در بین بهروزرسانیهای افزونه ثابت نگه دارد.
نمونه ها
برای امتحان این API، نمونه ContentSettings API را از مخزن chrome-extension-samples نصب کنید.
انواع
AutoVerifyContentSetting
Enum
"اجازه دادن" "بلاک کردن"
CameraContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
ClipboardContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
ContentSetting
خواص
- روشن
باطل
قول بدهتمام قوانین تنظیم محتوا را که توسط این برنامه افزودنی تنظیم شده است پاک کنید.
تابع
clear
به نظر می رسد:(details: object, callback?: function) => {...}
- جزئیات
شی
- دامنه
دامنه اختیاری است
محل پاک کردن تنظیمات (پیشفرض: معمولی).
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
- برمی گرداند
قول<باطل>
Chrome 96+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
- دریافت کنید
باطل
قول بدهتنظیمات محتوای فعلی را برای یک جفت نشانی وب معین دریافت می کند.
تابع
get
به نظر می رسد:(details: object, callback?: function) => {...}
- جزئیات
شی
- ناشناس
بولی اختیاری
اینکه آیا تنظیمات محتوا برای یک جلسه ناشناس بررسی شود یا خیر. (نادرست پیش فرض)
- PrimaryUrl
رشته
URL اصلی که تنظیمات محتوا باید برای آن بازیابی شود. توجه داشته باشید که معنای URL اصلی به نوع محتوا بستگی دارد.
- شناسه منبع
ResourceIdentifier اختیاری است
یک شناسه خاص تر از نوع محتوایی که تنظیمات باید برای آن بازیابی شوند.
- secondaryUrl
رشته اختیاری
نشانی اینترنتی ثانویه که تنظیم محتوا باید برای آن بازیابی شود. پیشفرض URL اصلی توجه داشته باشید که معنای URL ثانویه به نوع محتوا بستگی دارد و همه انواع محتوا از URL های ثانویه استفاده نمی کنند.
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:(details: object) => void
- جزئیات
شی
- تنظیم
تی
تنظیم محتوا برای مقادیر ممکن، توضیحات تک تک اشیاء ContentSetting را ببینید.
- برمی گرداند
قول<object>
Chrome 96+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
- getResourceIdentifiers
باطل
قول بدهتابع
getResourceIdentifiers
به شکل زیر است:(callback?: function) => {...}
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:(resourceIdentifiers?: ResourceIdentifier[]) => void
- شناسه های منبع
ResourceIdentifier [] اختیاری است
فهرستی از شناسههای منبع برای این نوع محتوا، یا اگر این نوع محتوا از شناسههای منبع استفاده نکند
undefined
.
- برمی گرداند
Promise< ResourceIdentifier []>
Chrome 96+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
- مجموعه
باطل
قول بدهیک قانون تنظیم محتوا جدید اعمال می کند.
تابع
set
به نظر می رسد:(details: object, callback?: function) => {...}
- جزئیات
شی
- الگوی اولیه
رشته
الگوی URL اصلی. برای جزئیات بیشتر در مورد قالب یک الگو، به الگوهای تنظیم محتوا مراجعه کنید.
- شناسه منبع
ResourceIdentifier اختیاری است
شناسه منبع برای نوع محتوا.
- دامنه
دامنه اختیاری است
محل تنظیم تنظیمات (پیشفرض: معمولی).
- الگوی ثانویه
رشته اختیاری
الگوی URL ثانویه. به طور پیش فرض برای مطابقت با همه URL ها. برای جزئیات بیشتر در مورد قالب یک الگو، به الگوهای تنظیم محتوا مراجعه کنید.
- تنظیم
هر
تنظیم اعمال شده توسط این قانون. برای مقادیر ممکن، توضیحات تک تک اشیاء ContentSetting را ببینید.
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
- برمی گرداند
قول<باطل>
Chrome 96+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
CookiesContentSetting
Enum
"اجازه دادن" "بلاک کردن" "sesion_only"
FullscreenContentSetting
ارزش
"اجازه دادن"
ImagesContentSetting
Enum
"اجازه دادن" "بلاک کردن"
JavascriptContentSetting
Enum
"اجازه دادن" "بلاک کردن"
LocationContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
MicrophoneContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
MouselockContentSetting
ارزش
"اجازه دادن"
MultipleAutomaticDownloadsContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
NotificationsContentSetting
Enum
"اجازه دادن" "بلاک کردن" "پرسیدن"
PluginsContentSetting
ارزش
"بلاک کردن"
PopupsContentSetting
Enum
"اجازه دادن" "بلاک کردن"
PpapiBrokerContentSetting
ارزش
"بلاک کردن"
ResourceIdentifier
تنها نوع محتوایی که از شناسه های منبع استفاده می کند contentSettings.plugins
است. برای اطلاعات بیشتر، Resource Identifiers را ببینید.
خواص
- توضیحات
رشته اختیاری
توصیف قابل خواندن توسط انسان از منبع.
- شناسه
رشته
شناسه منبع برای نوع محتوای داده شده.
Scope
محدوده ContentSetting. یکی از regular
: تنظیم برای نمایه معمولی (که اگر در جای دیگری لغو نشود توسط نمایه ناشناس به ارث می رسد)، incognito\_session\_only
: تنظیم برای نمایه ناشناس که فقط در طول یک جلسه ناشناس تنظیم می شود و با پایان جلسه ناشناس حذف می شود ( تنظیمات معمولی را نادیده می گیرد).
Enum
"به طور منظم" "oncognito_session_only"
خواص
automaticDownloads
آیا به سایتها اجازه داده میشود چندین فایل را به صورت خودکار دانلود کنند. یکی از allow
: به سایتها اجازه میدهد چندین فایل را بهطور خودکار دانلود کنند، block
: به سایتها اجازه نمیدهد چندین فایل را بهطور خودکار دانلود کنند، ask
: وقتی سایتی میخواهد پس از اولین فایل فایلها را بهطور خودکار دانلود کند، سؤال شود. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی قاب سطح بالا است. URL ثانویه استفاده نمی شود.
تایپ کنید
autoVerify
آیا به سایتها اجازه میدهد از API توکنهای دولتی خصوصی استفاده کنند یا خیر. یکی از allow
: به سایتها اجازه میدهد از API توکنهای دولتی خصوصی استفاده کنند، block
: سایتها را از استفاده از API توکنهای دولتی مسدود کنید. پیش فرض allow
است. نشانی اینترنتی اصلی، نشانی اینترنتی قاب سطح بالا است. URL ثانویه استفاده نمی شود. نکته: هنگام فراخوانی set()
الگوی اولیه باید باشد.
تایپ کنید
camera
آیا به سایتها اجازه دسترسی به دوربین داده میشود یا خیر. یکی از allow
: به سایتها اجازه دسترسی به دوربین، block
: به سایتها اجازه دسترسی به دوربین داده نشود، ask
: وقتی سایتی میخواهد به دوربین دسترسی پیدا کند، سؤال کنید. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی سندی است که درخواست دسترسی به دوربین را داده است. URL ثانویه استفاده نمی شود. توجه: اگر هر دو الگو '' باشند، تنظیم "مجاز" معتبر نیست.
تایپ کنید
clipboard
آیا به سایتها اجازه داده میشود از طریق قابلیتهای پیشرفته Async Clipboard API به کلیپبورد دسترسی داشته باشند. قابلیتهای «پیشرفته» شامل هر چیزی غیر از نوشتن فرمتهای داخلی پس از حرکت کاربر است، یعنی توانایی خواندن، توانایی نوشتن فرمتهای سفارشی، و امکان نوشتن بدون اشاره کاربر. یکی از allow
: به سایتها اجازه میدهد از قابلیتهای کلیپبورد پیشرفته استفاده کنند، block
: به سایتها اجازه استفاده از قابلیتهای کلیپبرد پیشرفته داده نشود، ask
: وقتی سایتی میخواهد از قابلیتهای پیشرفته کلیپبورد استفاده کند، بپرسید. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی سندی است که درخواست دسترسی به کلیپ بورد را داشته است. URL ثانویه استفاده نمی شود.
تایپ کنید
cookies
آیا به کوکیها و سایر دادههای محلی اجازه داده میشود توسط وبسایتها تنظیم شوند یا خیر. یکی از allow
: پذیرش کوکیها، block
: مسدود کردن کوکیها، session\_only
: کوکیها را فقط برای جلسه فعلی بپذیرید. پیش فرض allow
است. نشانی اینترنتی اصلی، نشانی اینترنتی است که مبدا کوکی را نشان می دهد. URL ثانویه آدرس فریم سطح بالا است.
تایپ کنید
fullscreen
منسوخ شده است. دیگه تاثیری نداره اکنون مجوز تمام صفحه به طور خودکار برای همه سایت ها اعطا می شود. ارزش همیشه allow
است.
تایپ کنید
images
آیا برای نمایش تصاویر. یکی از allow
: نمایش تصاویر، block
: تصاویر نشان داده نشود. پیش فرض allow
است. نشانی اینترنتی اصلی، نشانی اینترنتی قاب سطح بالا است. URL ثانویه آدرس تصویر است.
تایپ کنید
javascript
اینکه آیا جاوا اسکریپت اجرا شود. یکی از allow
: جاوا اسکریپت را اجرا کنید، block
: جاوا اسکریپت را اجرا نکنید. پیش فرض allow
است. نشانی اینترنتی اصلی، نشانی اینترنتی قاب سطح بالا است. آدرس ثانویه استفاده نمی شود.
تایپ کنید
location
اجازه دادن به موقعیت جغرافیایی. یکی از allow
: به سایتها اجازه دهید موقعیت فیزیکی شما را ردیابی کنند، block
: به سایتها اجازه ندهید موقعیت مکانی فیزیکی شما را ردیابی کنند، ask
: قبل از اینکه سایتها به سایتها اجازه دهند موقعیت فیزیکی شما را ردیابی کنند، بپرسید. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی سندی است که اطلاعات مکان را درخواست کرده است. نشانی اینترنتی ثانویه نشانی اینترنتی قاب سطح بالا است (که ممکن است با URL درخواست کننده متفاوت باشد یا نباشد).
تایپ کنید
microphone
آیا به سایتها اجازه دسترسی به میکروفون داده میشود یا خیر. یکی از allow
: به سایتها اجازه دسترسی به میکروفون، block
: به سایتها اجازه دسترسی به میکروفون داده نشود، ask
: وقتی سایتی میخواهد به میکروفون دسترسی پیدا کند، سؤال کنید. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی سندی است که درخواست دسترسی میکروفون را کرده است. URL ثانویه استفاده نمی شود. توجه: اگر هر دو الگو '' باشند، تنظیم "مجاز" معتبر نیست.
تایپ کنید
mouselock
منسوخ شده است. دیگه تاثیری نداره اکنون مجوز قفل ماوس به طور خودکار برای همه سایت ها اعطا می شود. ارزش همیشه allow
است.
تایپ کنید
notifications
آیا به سایتها اجازه داده میشود اعلانهای دسکتاپ را نشان دهند. یکی از allow
: به سایتها اجازه داده شود اعلانهای دسکتاپ را نشان دهند، block
: به سایتها اجازه نمایش اعلانهای دسکتاپ داده نشود، ask
: وقتی سایتی میخواهد اعلانهای دسکتاپ را نشان دهد، بپرسید. پیش فرض ask
است. نشانی اینترنتی اصلی، نشانی اینترنتی سندی است که میخواهد اعلان را نشان دهد. URL ثانویه استفاده نمی شود.
تایپ کنید
plugins
منسوخ شده است. با حذف پشتیبانی فلش در کروم 88، این مجوز دیگر اثری ندارد. ارزش همیشه block
است. فراخوان های set()
و clear()
نادیده گرفته می شوند.
تایپ کنید
popups
آیا به سایتها اجازه داده میشود که پنجرههای بازشو را نشان دهند. یکی از allow
: به سایتها اجازه نمایش پنجرههای بازشو داده شود، block
: به سایتها اجازه نمایش پنجرههای بازشو داده نشود. پیش فرض block
است. نشانی اینترنتی اصلی، نشانی اینترنتی قاب سطح بالا است. آدرس ثانویه استفاده نمی شود.
تایپ کنید
unsandboxedPlugins
منسوخ شده است. قبلاً کنترل میشد که آیا به سایتها اجازه میداد افزونهها را بدون جعبه ایمنی اجرا کنند، با این حال، با حذف فرآیند فلش بروکر در Chrome 88، این مجوز دیگر هیچ تأثیری ندارد. ارزش همیشه block
است. فراخوان های set()
و clear()
نادیده گرفته می شوند.