ההרשאה "activeTab" נותנת לתוסף גישה זמנית לכרטיסייה הפעילה כרגע כשהמשתמש מפעיל את התוסף – לדוגמה, בלחיצה על הפעולה שלו. הגישה לכרטיסייה נמשכת כל עוד המשתמש נמצא בדף הזה, והיא מבוטלת כשהמשתמש יוצא מהדף או סוגר את הכרטיסייה.
לדוגמה, אם המשתמש מפעיל את התוסף בכתובת https://example.com ואז עובר לכתובת https://example.com/foo, לתוסף תמשיך להיות גישה לדף. אם המשתמש עובר אל https://chromium.org, הגישה מבוטלת.
היא משמשת כחלופה לשימושים רבים של "<all_urls>", אבל לא מוצגת הודעת אזהרה במהלך ההתקנה:
בלי "activeTab":

עם "activeTab":

אין גישה לדפים מוגבלים, כמו דפי chrome://.
דוגמה
עיינו בתוסף לדוגמה Page Redder:
manifest.json:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_title": "Make this page red"
},
"manifest_version": 3
}
service-worker:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
browser.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
browser.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
למה בחרנו לעשות זאת?
נניח שיש לכם תוסף לשמירת תוכן מהאינטרנט שכולל פעולה ופריט בתפריט ההקשר. יכול להיות שהתוסף הזה צריך לגשת לכרטיסיות רק כשלוחצים על הפעולה שלו, או כשמפעילים את הפריט שלו בתפריט ההקשר.
בלי "activeTab", התוסף הזה יצטרך לבקש גישה מלאה וקבועה לכל אתר, רק כדי שיוכל לבצע את הפעולה שלו אם המשתמש יפעיל אותו. זה הרבה כוח לתוסף כל כך פשוט. אם התוסף ייפרץ, התוקף יקבל גישה לכל מה שהיה לתוסף.
לעומת זאת, תוסף עם ההרשאה "activeTab" מקבל גישה לכרטיסייה רק בתגובה לתנועה מפורשת של המשתמש. אם התוסף נפרץ, התוקף יצטרך לחכות שהמשתמש יפעיל את התוסף כדי לקבל גישה. הגישה הזו נמשכת רק עד שסוגרים את הכרטיסייה או עוברים ממנה למקום אחר.
מה ההרשאה activeTab מאפשרת
כשההרשאה "activeTab" מופעלת בכרטיסייה, התוסף יכול:
- מפעילים את
scripting.insertCSS()או אתscripting.executeScript()בכרטיסייה הזו אם גם ההרשאה"scripting"מוצהרת (כמו בדוגמה שלמעלה). - לקבל את כתובת ה-URL, הכותרת וסמל האתר של הכרטיסייה הזו דרך API שמחזיר אובייקט
tabs.Tab(בעיקרון,"activeTab"מעניקה הרשאת מארח באופן זמני). - ליירט בקשות לאחזור מהרשת בכרטיסייה למקור של המסגרת הראשית של הכרטיסייה באמצעות ה-API של webRequest. התוסף מקבל באופן זמני הרשאות מארח למקור של המסגרת הראשית בכרטיסייה.
הפעלת activeTab
התנועות הבאות של המשתמש מפעילות את ההרשאה "activeTab":
- ביצוע פעולה
- הפעלת פריט בתפריט ההקשר
- הפעלה של מקש קיצור מcommands API
- קבלת הצעה מ-omnibox API