"activeTab" izni, kullanıcı uzantıyı çağırdığında (ör. işlemini tıklayarak) uzantıya o anda etkin olan sekmeye geçici erişim verir. Sekmeye erişim, kullanıcı o sayfadayken devam eder ve kullanıcı sayfadan ayrıldığında veya sekmeyi kapattığında iptal edilir.
Örneğin, kullanıcı uzantıyı https://example.com adresinde çağırır ve ardından https://example.com/foo adresine giderse uzantı sayfaya erişmeye devam eder. Kullanıcı https://chromium.org adresine giderse erişim iptal edilir.
Bu, "<all_urls>" komutunun birçok kullanımına alternatif olarak kullanılabilir ancak yükleme sırasında uyarı mesajı göstermez:
"activeTab" olmayanlar:

"activeTab" ile:

chrome:// sayfaları gibi kısıtlanmış sayfalara erişim izni verilmez.
Örnek
Page Redder örnek uzantısını inceleyin:
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';
}
browser.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
browser.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivasyon
İşlem ve bağlam menüsü öğesi içeren bir web kırpma uzantısı düşünün. Bu uzantının, yalnızca işlemi tıklandığında veya bağlam menüsü öğesi yürütüldüğünde sekmelere erişmesi gerekebilir.
"activeTab" olmasaydı bu uzantının, kullanıcı tarafından çağrılması durumunda işini yapabilmesi için her web sitesine tam ve kalıcı erişim istemesi gerekirdi. Bu kadar basit bir uzantıya bu kadar yetki vermek çok fazla. Uzantının güvenliği ihlal edilirse saldırgan, uzantının sahip olduğu her şeye erişebilir.
Buna karşılık, "activeTab" iznine sahip bir uzantı, yalnızca açık bir kullanıcı hareketine yanıt olarak bir sekmeye erişim elde eder. Uzantının güvenliği ihlal edilirse saldırganın erişim elde etmeden önce kullanıcının uzantıyı çağırmasını beklemesi gerekir. Bu erişim, sekme kapatılana veya sekmede başka bir sayfaya gidilene kadar devam eder.
"activeTab" izniyle neler yapılabilir?
Bir sekme için "activeTab" izni etkinleştirildiğinde uzantı şunları yapabilir:
"scripting"izni de beyan edilmişse (yukarıdaki örnekte olduğu gibi) bu sekmedescripting.insertCSS()veyascripting.executeScript()yöntemini çağırın.tabs.Tabnesnesi döndüren bir API aracılığıyla o sekmenin URL'sini, başlığını ve site simgesini alır (temel olarak"activeTab", geçici olarak ana makine izni verir).- webRequest API'yi kullanarak sekmedeki ağ isteklerini sekmenin ana çerçeve kaynağına yönlendirin. Uzantı, sekmenin ana çerçeve kaynağı için geçici olarak ana makine izinleri alır.
activeTab çağrılıyor
Aşağıdaki kullanıcı hareketleri "activeTab" iznini etkinleştirir:
- İşlem yürütme
- Bağlam menüsü öğesini yürütme
- Commands API'den klavye kısayolu yürütme
- Omnibox API'den gelen bir öneriyi kabul etme