کلید "content_scripts"
یک فایل جاوا اسکریپت یا CSS بارگذاری شده ایستا را مشخص می کند تا هر بار که صفحه ای باز می شود که با الگوی URL خاصی مطابقت دارد استفاده شود. افزونه ها همچنین می توانند اسکریپت های محتوا را به صورت برنامه نویسی تزریق کنند، برای جزئیات بیشتر به تزریق اسکریپت ها مراجعه کنید.
آشکار
اینها کلیدهای پشتیبانی شده برای "content_scripts"
هستند. فقط کلید "matches"
و "js"
یا "css"
مورد نیاز است.
manifest.json
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"css": ["my-styles.css"],
"js": ["content-script.js"],
"exclude_matches": ["*://*/*foo*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*bar*"],
"all_frames": false,
"match_origin_as_fallback": false,
"match_about_blank": false,
"run_at": "document_idle",
"world": "ISOLATED",
}
],
...
}
فایل ها
هر فایل باید یک مسیر نسبی به یک منبع در فهرست اصلی برنامه افزودنی داشته باشد. اسلش های اصلی ( /
) به طور خودکار بریده می شوند. کلید "run_at"
زمان تزریق هر فایل را مشخص می کند.
-
"css"
- آرایه - اختیاری آرایه ای از مسیرهای فایل CSS که به ترتیب این آرایه تزریق می شود و قبل از هر گونه ساخت DOM یا رندر صفحه رخ می دهد.
-
"js"
- آرایه، - اختیاری آرایه ای از مسیرهای فایل جاوا اسکریپت، به ترتیبی که در این آرایه ظاهر می شوند، پس از تزریق فایل های css تزریق می شوند. هر رشته در آرایه باید یک مسیر نسبی به یک منبع در دایرکتوری ریشه برنامه افزودنی باشد. اسلش های اصلی ('/') به طور خودکار بریده می شوند.
URL ها را مطابقت دهید
فقط ویژگی "matches"
مورد نیاز است. سپس میتوانید از "exclude_matches"
، "include_globs"
و "exclude_globs"
برای سفارشی کردن آدرسهای اینترنتی برای تزریق کد استفاده کنید. کلید "matches"
یک هشدار را راه اندازی می کند.
-
"matches"
- آرایه - مورد نیاز . مشخص می کند که کدام الگوهای URL برای تزریق اسکریپت های محتوا. به الگوهای مطابقت برای نحو مراجعه کنید.
-
"exclude_matches"
- آرایه - اختیاری الگوهای URL را برای تزریق اسکریپت های محتوا در آن مستثنی می کند. به الگوهای مطابقت برای نحو مراجعه کنید.
-
"include_globs"
- آرایه - اختیاری پس از منطبقها اعمال میشود تا فقط نشانیهایی را شامل شود که با این glob مطابقت دارند. در نظر گرفته شده برای تقلید از کلمه کلیدی @include Greasemonkey.
-
"exclude_globs"
- آرایه - اختیاری برای حذف نشانیهای وب که با این glob مطابقت دارند، پس از مطابقت اعمال میشود. در نظر گرفته شده برای تقلید از کلمه کلیدی @exclude Greasemonkey.
نشانیهای اینترنتی Glob آنهایی هستند که حاوی علامت * و علامت سوال هستند. علامت * با هر رشته ای با هر طولی، از جمله یک رشته خالی مطابقت دارد، در حالی که علامت سوال ? با هر شخصیت منطبق است.
اسکریپت محتوا به یک صفحه تزریق می شود اگر:
- نشانی وب آن با هر الگوی
"matches"
و"include_globs"
مطابقت دارد. - و URL با الگوهای
"exclude_matches"
یا"exclude_globs"
مطابقت ندارد.
نمونه های تطبیق Glob و URL
"include_globs"
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["https://???.example.com/foo/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/foo/bar https://the.example.com/foo/
https://my.example.com/foo/bar https://example.com/foo/* https://www.example.com/foo
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["*example.com/???s/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://www.example.com/jobs/index.html
https://www.example.com/sports/index.html https://www.example.com/music/index.html
"exclude_globs"
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://history.example.com https://.example.com/music
https://science.example.com https://www.example.com/science
نمونه سفارشی سازی پیشرفته
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_matches": ["*://*/*business*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://.example.com/jobs/index.html
https://science.example.com https://www.example.com/jobs/business https://www.example.com/science
قاب ها
کلید "all_frames"
مشخص می کند که آیا اسکریپت محتوا باید به همه فریم های مطابق با الزامات URL مشخص شده تزریق شود یا خیر. اگر روی false
تنظیم شود، فقط به بالاترین فریم تزریق می شود. می توان از آن به همراه "match_about_blank"
برای تزریق در یک قاب about:blank
استفاده کرد.
برای تزریق به فریم های دیگر مانند data:
, blob:
و filesystem:
"match_origin_as_fallback"
را روی true
تنظیم کنید. برای جزئیات، به تزریق در فریم های مرتبط مراجعه کنید
-
"all_frames"
Boolean - اختیاری پیشفرض به
false
میشود، به این معنی که فقط فریم بالایی مطابقت دارد. اگر روی true تنظیم شود، به همه فریم ها تزریق می شود، حتی اگر فریم بالاترین فریم در زبانه نباشد. هر فریم به طور مستقل برای الزامات URL بررسی می شود، اگر الزامات URL برآورده نشود، به فریم های فرزند تزریق نمی شود. -
"match_about_blank"
- بولی - اختیاری پیش فرض ها به
false
. اینکه آیا اسکریپت باید در یک قابabout:blank
تزریق شود که در آن URL والد با یکی از الگوهای اعلام شده در"matches"
مطابقت دارد یا خیر. -
"match_origin_as_fallback"
- Boolean - اختیاری پیش فرض ها به
false
. اینکه آیا اسکریپت باید در فریمهایی تزریق شود که توسط یک مبدا منطبق ایجاد شدهاند، اما URL یا مبدا آنها ممکن است مستقیماً با الگو مطابقت نداشته باشد. اینها شامل فریمهایی با طرحهای مختلف، مانندabout:
data:
blob:
وfilesystem:
.
زمان اجرا و محیط اجرا
بهطور پیشفرض، اسکریپتهای محتوا زمانی تزریق میشوند که سند و همه منابع بارگیری میشوند و در یک محیط اجرای مجزای خصوصی زندگی میکنند که برای صفحه یا سایر برنامههای افزودنی قابل دسترسی نیست. شما می توانید این پیش فرض ها را در کلیدهای زیر تغییر دهید:
-
"run_at"
-document_start
|document_end
|document_idle
- اختیاری مشخص می کند چه زمانی اسکریپت باید به صفحه تزریق شود. با حالت های بارگیری Document.readyState مطابقت دارد:
-
"document_start"
: DOM هنوز در حال بارگیری است. -
"document_end"
: منابع صفحه هنوز در حال بارگیری هستند -
"document_idle"
: بارگیری DOM و منابع به پایان رسیده است. این پیش فرض است.
-
-
"world"
-ISOLATED
|MAIN
- اختیاری دنیای جاوا اسکریپت برای اجرای یک اسکریپت در داخل. پیشفرض به
"ISOLATED"
میرسد، که محیط اجرای منحصر به فرد برای اسکریپت محتوا است. انتخاب جهان"MAIN"
به این معنی است که اسکریپت محیط اجرا را با جاوا اسکریپت صفحه میزبان به اشتراک می گذارد. برای کسب اطلاعات بیشتر به کار در دنیاهای ایزوله مراجعه کنید.
مثال
برای ساخت افزونه ای که اسکریپت محتوا را در مانیفست تزریق می کند، آموزش Run on every page را ببینید.