जब उपयोगकर्ता किसी एक्सटेंशन को न्योता करता है, तो 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
को कॉल करें. - एपीआई की मदद से उस टैब के लिए यूआरएल, टाइटल, और फ़ेविकॉन पाएं. यह एपीआई
tabs.Tab
ऑब्जेक्ट को दिखाता है (ज़रूरी है किactiveTab
,tabs
की अनुमति कुछ समय के लिए देता है). - webRequest एपीआई का इस्तेमाल करके, टैब के मुख्य फ़्रेम ऑरिजिन पर नेटवर्क अनुरोधों को रोकें. एक्सटेंशन को कुछ समय के लिए, टैब के मुख्य फ़्रेम के ऑरिजिन के लिए, होस्ट की अनुमतियां मिलती हैं.
ActiveTab को शुरू करना
उपयोगकर्ता के लिए, हाथ के इन जेस्चर का इस्तेमाल करके, activeTab
की सुविधा चालू की जा सकती है:
- ब्राउज़र की कार्रवाई करना
- पेज पर कार्रवाई करना
- कॉन्टेक्स्ट मेन्यू आइटम चलाना
- commands API से कीबोर्ड शॉर्टकट एक्ज़ीक्यूट करना
- खोज वाली पट्टी एपीआई से किसी सुझाव को स्वीकार करना