ההרשאה "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';
}
chrome.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
למה בחרנו לעשות זאת?
כדאי לשקול להשתמש בתוסף לחיתוך קטעים מהאינטרנט שיש בו פעולה ופריט בתפריט הקשר. יכול להיות שהתוסף הזה צריך לגשת לכרטיסיות רק כשלוחצים על הפעולה שלו או כשמבצעים את הפריט בתפריט ההקשר שלו.
בלי "activeTab", התוסף הזה יצטרך לבקש גישה מלאה ומתמשכת לכל אתר, רק כדי שיוכל לבצע את העבודה שלו אם המשתמש יקרא לו. הרבה כוח מופקד בידי תוסף פשוט כל כך. ואם התוסף ייפרץ, התוקף יקבל גישה לכל מה שהיה לתוסף.
לעומת זאת, תוסף עם ההרשאה "activeTab" מקבל גישה לכרטיסייה רק בתגובה למחווה מפורשת של המשתמש. אם התוסף נפרץ, התוקף יצטרך לחכות שהמשתמש יפעיל את התוסף לפני שהוא יקבל גישה. הגישה הזו תקפה רק עד שהכרטיסייה עוברת למיקום אחר או נסגרת.
מה אפשר לעשות באמצעות activeTab
כשההרשאה "activeTab" מופעלת לכרטיסייה, תוסף יכול:
- אפשר להתקשר אל
scripting.insertCSS()או אלscripting.executeScript()בכרטיסייה הזו אם גם"scripting"ההרשאה מוצהרת (כמו בדוגמה שלמעלה). - אפשר לקבל את כתובת ה-URL, הכותרת והסמל של הכרטיסייה הזו באמצעות API שמחזיר אובייקט
tabs.Tab(בעצם,"activeTab"מעניק הרשאת מארח באופן זמני). - יירוט בקשות רשת בכרטיסייה למקור של המסגרת הראשית של הכרטיסייה באמצעות webRequest API. ההרשאות למארח ניתנות לתוסף באופן זמני עבור המקור של המסגרת הראשית של הכרטיסייה.
הפעלת activeTab
הפעולות הבאות של המשתמש מאפשרות את ההרשאה "activeTab":
- ביצוע פעולה
- הפעלת פריט בתפריט ההקשר
- הפעלת מקש קיצור מתוך commands API
- אישור הצעה מ-omnibox API