תיאור
משתמשים ב-chrome.scripting API כדי להריץ סקריפט בהקשרים שונים.
הרשאות
scriptingזמינות
מניפסט
כדי להשתמש ב-browser.scripting API, צריך להצהיר על ההרשאה "scripting" במניפסט, וגם על הרשאות המארח לדפים שבהם רוצים להחדיר סקריפטים. משתמשים במקש "host_permissions" או בהרשאה "activeTab", שמעניקים הרשאות זמניות של מארח. בדוגמה הבאה נעשה שימוש בהרשאה activeTab.
{
"name": "Scripting Extension",
"manifest_version": 3,
"permissions": ["scripting", "activeTab"],
...
}
מושגים ושימוש
אפשר להשתמש ב-browser.scripting API כדי להחדיר JavaScript ו-CSS לאתרים. זה דומה למה שאפשר לעשות עם סקריפטים של תוכן. אבל באמצעות מרחב השמות browser.scripting, תוספים יכולים לקבל החלטות בזמן הריצה.
יעדים להזרקה
אפשר להשתמש בפרמטר target כדי לציין יעד להוספת JavaScript או CSS.
שדה החובה היחיד הוא tabId. כברירת מחדל, ההזרקה תפעל במסגרת הראשית של הכרטיסייה שצוינה.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId()},
files : [ "script.js" ],
})
.then(() => console.log("script injected"));
כדי להפעיל את התוסף בכל המסגרות של הכרטיסייה שצוינה, אפשר להגדיר את הערך של allFrames boolean
ל-true.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId(), allFrames : true},
files : [ "script.js" ],
})
.then(() => console.log("script injected in all frames"));
אפשר גם להחדיר לפריימים ספציפיים בכרטיסייה על ידי ציון מזהי פריימים ספציפיים. מידע נוסף על מזהי מסגרות זמין במאמר בנושא browser.webNavigation API.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId(), frameIds : [ frameId1, frameId2 ]},
files : [ "script.js" ],
})
.then(() => console.log("script injected on target frames"));
קוד מוחדר
תוספים יכולים לציין את הקוד להחדרה באמצעות קובץ חיצוני או משתנה בזמן ריצה.
קבצים
הקבצים מצוינים כמחרוזות שהן נתיבים יחסיים לתיקיית השורש של התוסף. הקוד הבא יחדיר את הקובץ script.js למסגרת הראשית של הכרטיסייה.
function getTabId() { ... }
browser.scripting
.executeScript({
target : {tabId : getTabId()},
files : [ "script.js" ],
})
.then(() => console.log("injected script file"));
פונקציות של זמן ריצה
כשמזריקים JavaScript באמצעות scripting.executeScript(), אפשר לציין פונקציה שתופעל במקום קובץ. הפונקציה הזו צריכה להיות משתנה פונקציה שזמין בהקשר הנוכחי של התוסף.
function getTabId() { ... }
function getTitle() { return document.title;