ההרשאה "activeTab"
מעניקה לתוסף גישה זמנית לכרטיסייה הפעילה הנוכחית כאשר
המשתמש מפעיל את התוסף. לדוגמה, על ידי לחיצה על הפעולה שלו. גישה לכרטיסייה
נמשך כל עוד המשתמש נמצא בדף, ומבוטל כשהמשתמש מנווט אל מחוץ לכרטיסייה או סוגר אותה.
לדוגמה, אם המשתמש מפעיל את התוסף בכתובת https://example.com ואז
עובר אל https://example.com/foo, לתוסף תמשיך להיות גישה לדף. אם
המשתמש מנווט אל https://chromium.org, הגישה בוטלה.
האפשרות הזו משמשת כחלופה לשימושים רבים ב-"<all_urls>"
, אבל לא מוצגת הודעת אזהרה
במהלך ההתקנה:
בלי "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"
מעניקה הרשאת מארח באופן זמני). - הקצאת בקשות רשת בכרטיסייה למקור המסגרת הראשי של הכרטיסייה באמצעות webRequest API. התוסף מקבל באופן זמני הרשאות מארח עבור מקור המסגרת הראשי של הכרטיסייה.
הפעלת ActiveTab
תנועות המשתמש הבאות מפעילות את ההרשאה "activeTab"
:
- ביצוע פעולה
- להפעיל אפשרות בתפריט ההקשר.
- הפעלת מקשי קיצור מ-commands API
- אישור הצעה מ-סרגל ה-API