ההרשאה "activeTab"

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

זוהי חלופה לשימושים רבים של "<all_urls>", אבל לא תוצג אזהרה במהלך ההתקנה:

ללא "activeTab":

ללא ActiveTab

עם "activeTab":

עם activeTab

דוגמה

אפשר לעיין בתוסף לדוגמה 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 (!tab.url.includes('chrome://')) {
    chrome.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":