מניפסט – סקריפטים של תוכן

המפתח "content_scripts" מציין קובץ JavaScript או 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",
   }
 ],
 ...
}

Files

כל קובץ חייב להכיל נתיב יחסי למשאב בספריית השורש של התוסף. קווים נטויים מובילים (/) חתוכים באופן אוטומטי. המפתח "run_at" מציין מתי כל קובץ יוכנס.

"css" – מערך
אופציונלי. מערך של נתיבי קובצי CSS, המוחדרים לפי הסדר של המערך הזה ולפני כל בניית DOM או עיבוד דף.
"js" - מערך,
אופציונלי. מערך של נתיבי קובץ JavaScript, המוחדרים לפי הסדר שבו הם מופיעים למערך הזה, לאחר החדרת קובצי CSS. כל מחרוזת במערך חייבת להיות נתיב יחסי למשאב בתיקיית השורש של התוסף. קווים נטויים מובילים ('/') חתוכים באופן אוטומטי.

כתובות URL תואמות

רק המאפיין "matches" נדרש. לאחר מכן אפשר להשתמש ב-"exclude_matches", ב-"include_globs" וב-"exclude_globs" כדי להתאים אישית את כתובות ה-URL שבהן רוצים להחדיר קוד. המפתח "matches" יפעיל אזהרה.

"matches" – מערך
חובה. ההגדרה קובעת לאילו תבניות של כתובות URL יוחדרו סקריפטים של תוכן. למידע על התחביר, אפשר לעיין בתבניות התאמה.
"exclude_matches" – מערך
אופציונלי. לא כולל את דפוסי כתובות ה-URL שיש להכניס אליהם את הסקריפטים של התוכן. למידע על התחביר, אפשר לעיין בתבניות התאמה.
"include_globs" – מערך
אופציונלי. המערכת מחילה את ההגדרה אחרי התאמות כדי לכלול רק את כתובות ה-URL שתואמות גם הן ל-glob הזה. מיועד לאמולציה של מילת המפתח @include של Graeasemonkey.
"exclude_globs" – מערך
אופציונלי. המערכת מחילה את ההגדרה הזו אחרי התאמות כדי להחריג כתובות URL שתואמות לדומיין הזה. נועד לחקות את מילת המפתח @Exclude (החרגה) של Gareasemonkey.

כתובות URL של Glob הן כתובות שכוללות תווים כלליים לחיפוש * וסימני שאלה. התו הכללי לחיפוש * תואם לכל מחרוזת בכל אורך, כולל מחרוזת ריקה, ולסימן השאלה ? תואם לכל תו בודד.

סקריפט התוכן מוחדר לדף אם:

  • כתובת ה-URL שלו תואמת לכל הדפוסים "matches" ו-"include_globs".
  • וכתובת ה-URL לא תואמת לדפוסים של "exclude_matches" או "exclude_globs".

דוגמאות להתאמה של Globs ושל כתובות 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"
אופציונלי. ברירת המחדל היא false, כלומר רק המסגרת העליונה מתאימה. אם היא מוגדרת כ-True, היא תוחדר לכל הפריימים, גם אם המסגרת היא לא המסגרת העליונה בכרטיסייה. כל מסגרת נבדקת בנפרד כדי לראות את הדרישות לגבי כתובות ה-URL. היא לא מוחדרת למסגרות צאצא אם הן לא עומדות בדרישות לגבי כתובות ה-URL.
"match_about_blank"- בוליאני
אופציונלי. ברירת המחדל היא false. אם הסקריפט צריך להחדיר מסגרת about:blank שבה כתובת ה-URL של ההורה תואמת לאחת מהתבניות שהוצהרו ב-"matches".
"match_origin_as_fallback" – בוליאני
אופציונלי. ברירת המחדל היא 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
אופציונלי. עולם ה-JavaScript שבו סקריפט יופעל. ברירת המחדל היא "ISOLATED", שהיא סביבת הביצוע הייחודית לסקריפט התוכן. אם בחרת בעולם "MAIN", הסקריפט ישתף את סביבת הביצוע עם ה-JavaScript של הדף המארח. מידע נוסף זמין במאמר עבודה בעולמות מבודדים.

דוגמה

עיין במדריך הפעלה בכל דף כדי לבנות תוסף שמחדיר סקריפט תוכן במניפסט.