ההרשאה activeTab

ההרשאה activeTab נותנת לתוסף גישה זמנית לכרטיסייה שפעילה כרגע כשהמשתמש מפעיל את התוסף. לדוגמה, על ידי לחיצה על פעולת הדפדפן שלו. הגישה לכרטיסייה נמשכת כשהמשתמש נמצא בדף, והיא מבוטלת כשהמשתמש מנווט מחוץ לכרטיסייה או סוגר אותה.

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

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

ללא activeTab:

ללא ActiveTab

עם activeTab:

עם activeTab

דוגמה

אפשר לעיין בתוסף לדוגמה Page Redder:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

למה בחרנו לעשות זאת?

מומלץ להשתמש בתוסף לגזיר אינטרנט שמכיל פעולה בדפדפן ופריט הקשר של תפריט הקשר. ייתכן שהתוסף הזה יצטרך לגשת לכרטיסיות רק כשלוחצים על פעולת הדפדפן שלו, או כשמתבצעת פעולה של פריט בתפריט ההקשר.

בלי activeTab, התוסף הזה היה צריך לבקש גישה מלאה ועקבית לכל אתר אינטרנט, רק כדי שהוא יוכל לפעול אם המשתמש יקרא לו. זה הרבה כוח שאפשר להפקיד בתוסף פשוט כזה. אם התוסף ייפרץ, הוא יקבל גישה לכל מה שיש לו.

לעומת זאת, תוסף עם ההרשאה activeTab מקבל גישה לכרטיסייה רק בתגובה לתנועת משתמש מפורשת. אם התוסף נפרץ, התוקף צריך להמתין שהמשתמש יפעיל אותו כדי לקבל גישה. הגישה הזו בתוקף רק עד למעבר לניווט או לסגירה של הכרטיסייה.

מה ActiveTab מאפשר

כשההרשאה activeTab מופעלת לכרטיסייה, התוסף יכול:

  • מתקשרים tabs.executeScript או tabs.insertCSS בכרטיסייה הזו.
  • אפשר להשיג את כתובת ה-URL, הכותרת והסמל של הכרטיסייה הזו דרך API שמחזיר אובייקט tabs.Tab (בעיקרון, activeTab מעניק את ההרשאה tabs באופן זמני).
  • יירוט בקשות רשת בכרטיסייה למקור של המסגרת הראשית של הכרטיסייה באמצעות ה-API webRequest. התוסף מקבל באופן זמני הרשאות מארח עבור מקור המסגרת הראשית של הכרטיסייה.

הפעלת הכרטיסייה activeTab

תנועות המשתמש הבאות מפעילות את activeTab: