"activeTab" अनुमति देने पर, एक्सटेंशन को मौजूदा ऐक्टिव टैब का कुछ समय के लिए ऐक्सेस मिलता है. ऐसा तब होता है, जब उपयोगकर्ता एक्सटेंशन को चालू करता है. उदाहरण के लिए, एक्सटेंशन के ऐक्शन पर क्लिक करके. जब तक उपयोगकर्ता उस पेज पर रहता है, तब तक उसके पास टैब का ऐक्सेस रहता है. जब उपयोगकर्ता किसी दूसरे पेज पर जाता है या टैब बंद करता है, तब ऐक्सेस वापस ले लिया जाता है.
उदाहरण के लिए, अगर उपयोगकर्ता https://example.com पर एक्सटेंशन को चालू करता है और फिर https://example.com/foo पर जाता है, तो एक्सटेंशन के पास पेज का ऐक्सेस बना रहेगा. अगर उपयोगकर्ता https://chromium.org पर जाता है, तो ऐक्सेस रद्द कर दिया जाता है.
यह "<all_urls>" के कई इस्तेमाल के लिए एक विकल्प के तौर पर काम करता है. हालांकि, इंस्टॉलेशन के दौरान कोई चेतावनी वाला मैसेज नहीं दिखता है:
"activeTab" के बिना:

"activeTab" के साथ:

पाबंदी वाले पेजों को ऐक्सेस करने की अनुमति नहीं दी जाती. जैसे, chrome:// पेजों को ऐक्सेस करने की अनुमति नहीं दी जाती.
उदाहरण
पेज रीडर का सैंपल एक्सटेंशन देखें:
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 the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
वजह
मान लें कि आपके पास एक वेब क्लिपिंग एक्सटेंशन है, जिसमें कार्रवाई और संदर्भ मेन्यू आइटम मौजूद है. इस एक्सटेंशन को सिर्फ़ तब टैब ऐक्सेस करने की ज़रूरत पड़ सकती है, जब इसकी कार्रवाई पर क्लिक किया जाता है या जब इसके कॉन्टेक्स्ट मेन्यू आइटम को लागू किया जाता है.
"activeTab" के बिना, इस एक्सटेंशन को हर वेबसाइट के लिए, हमेशा के लिए पूरा ऐक्सेस पाने का अनुरोध करना होगा. ऐसा इसलिए, ताकि उपयोगकर्ता के अनुरोध करने पर यह एक्सटेंशन काम कर सके. यह एक सामान्य एक्सटेंशन को इतनी ज़्यादा अनुमतियां देने जैसा है. अगर एक्सटेंशन से कभी छेड़छाड़ की जाती है, तो हमलावर को एक्सटेंशन में मौजूद हर चीज़ का ऐक्सेस मिल जाता है.
इसके उलट, "activeTab" अनुमति वाला एक्सटेंशन, उपयोगकर्ता के साफ़ तौर पर किए गए जेस्चर के जवाब में सिर्फ़ एक टैब का ऐक्सेस पाता है. अगर एक्सटेंशन से समझौता किया जाता है, तो हमलावर को ऐक्सेस पाने से पहले, उपयोगकर्ता के एक्सटेंशन को चालू करने का इंतज़ार करना होगा. यह ऐक्सेस तब तक ही रहता है, जब तक टैब पर नेविगेट किया जाता है या उसे बंद नहीं कर दिया जाता.
"activeTab" की मदद से क्या-क्या किया जा सकता है
किसी टैब के लिए "activeTab" की अनुमति चालू होने पर, कोई एक्सटेंशन ये काम कर सकता है:
- अगर
"scripting"अनुमति के बारे में भी बताया गया है (जैसा कि ऊपर दिए गए उदाहरण में है), तो उस टैब परscripting.insertCSS()याscripting.executeScript()को कॉल करें. - उस टैब के लिए यूआरएल, टाइटल, और फ़ेविकॉन पाएं. इसके लिए, ऐसे एपीआई का इस्तेमाल करें जो
tabs.Tabऑब्जेक्ट दिखाता है. इसका मतलब है कि"activeTab", कुछ समय के लिए होस्ट करने की अनुमति देता है. - webRequest एपीआई का इस्तेमाल करके, टैब में नेटवर्क अनुरोधों को टैब के मुख्य फ़्रेम के ऑरिजिन में इंटरसेप्ट करें. एक्सटेंशन को टैब के मुख्य फ़्रेम ऑरिजिन के लिए, कुछ समय के लिए होस्ट करने की अनुमतियां मिलती हैं.
activeTab को चालू करना
उपयोगकर्ता के इन जेस्चर से, "activeTab" अनुमति चालू हो जाती है:
- कार्रवाई करना
- कॉन्टेक्स्ट मेन्यू आइटम को लागू करना
- Commands API से कीबोर्ड शॉर्टकट लागू करना
- omnibox API से मिले सुझाव को स्वीकार करना