ההרשאה 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 באופן זמני).
  • הקצאת בקשות רשת בכרטיסייה למקור המסגרת הראשי של הכרטיסייה באמצעות webRequest API. התוסף מקבל באופן זמני הרשאות מארח עבור מקור המסגרת הראשי של הכרטיסייה.

הפעלת ActiveTab

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