ActiveTab की अनुमति

जब उपयोगकर्ता किसी एक्सटेंशन को न्योता करता है, तो activeTab अनुमति से, एक्सटेंशन को मौजूदा समय में चालू टैब का कुछ समय के लिए ऐक्सेस मिलता है - उदाहरण के लिए, ब्राउज़र की कार्रवाई पर क्लिक करके. टैब का ऐक्सेस उपयोगकर्ता के उस पेज पर रहने तक बना रहता है. जब उपयोगकर्ता किसी अन्य पेज पर जाता है या टैब को बंद करता है, तब टैब का ऐक्सेस वापस ले लिया जाता है.

यह <all_urls> के कई इस्तेमाल के लिए एक विकल्प के तौर पर काम करता है, लेकिन इंस्टॉल करने के दौरान चेतावनी का कोई मैसेज नहीं दिखाता है:

ध्यान दें: M72 के बाद से, activeTab की अनुमति तब तक दी जाएगी, जब तक कि उपयोगकर्ता किसी अलग ऑरिजिन पर नहीं जाता. इसका मतलब है कि अगर उपयोगकर्ता https://example.com पर एक्सटेंशन को शुरू करता है और फिर https://example.com/foo पर जाता है, तो एक्सटेंशन के पास पेज का ऐक्सेस बना रहेगा. अगर उपयोगकर्ता https://chromium.org पर जाता है, तो ऐक्सेस रद्द कर दिया जाता है.

activeTab के बिना:

ActiveTab के बिना

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 की सुविधा चालू की जा सकती है: