هنگامی که کاربر برنامه افزودنی را فراخوانی می کند ، مجوز activeTab به یک برنامه افزودنی دسترسی موقت به برگه فعال فعلی می دهد - برای مثال با کلیک کردن بر روی عملکرد مرورگر آن. دسترسی به برگه تا زمانی که کاربر در آن صفحه است ادامه مییابد و زمانی که کاربر برگه را دور میزند یا میبندد لغو میشود.
این به عنوان جایگزینی برای بسیاری از استفادههای <all_urls> عمل میکند، اما هیچ پیام هشداری را در حین نصب نمایش نمیدهد:
توجه: از M72 به بعد، مجوز activeTab تا زمانی که کاربر به مبدأ دیگری هدایت شود اعطا می شود. یعنی اگر کاربر افزونه را در https://example.com فراخوانی کند و سپس به https://example.com/foo هدایت شود، افزونه همچنان به صفحه دسترسی خواهد داشت. اگر کاربر به https://chromium.org هدایت شود، دسترسی لغو می شود.
بدون 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 فعال می کند:
- اجرای یک عمل مرورگر
- اجرای یک عمل صفحه
- اجرای یک آیتم منوی زمینه
- اجرای میانبر صفحه کلید از دستورات API
- پذیرش پیشنهاد از omnibox API