مانیفست - اسکریپت های محتوا

کلید "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 را ببینید.