"activeTab" अनुमति

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

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

"activeTab" के बिना:

ActiveTab के बिना

"activeTab" के साथ:

ActiveTab के साथ

उदाहरण

Page Redder का नमूना एक्सटेंशन देखें:

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
}

सेवा देने वाला:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

वजह

ऐसा वेब क्लिपिंग एक्सटेंशन जोड़ें जिसमें एक कार्रवाई और संदर्भ मेन्यू आइटम हो. यह एक्सटेंशन को वाकई टैब ऐक्सेस करने की ज़रूरत तब हो सकती है, जब उसकी कार्रवाई पर क्लिक किया जाए या जब संदर्भ मेन्यू आइटम चलाया गया.

"activeTab" के बिना, इस एक्सटेंशन को हर वेबसाइट का पूरा और स्थायी ऐक्सेस पाने का अनुरोध करना होगा, ताकि उपयोगकर्ता की ओर से कॉल करने पर वह अपना काम कर सके. यह मुमकिन है ऐसे आसान एक्सटेंशन को असाइन करने की ताकत भी होती है. और अगर एक्सटेंशन के साथ कभी छेड़छाड़ की जाती है, तो एक्सटेंशन की सभी सुविधाओं का ऐक्सेस मिलता है.

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

"activeTab" क्या है अनुमति देता है

जब किसी टैब के लिए "activeTab" अनुमति चालू होती है, तब एक्सटेंशन ये काम कर सकता है:

  • अगर "scripting" अनुमति भी दी गई है (जैसा कि ऊपर दिए गए उदाहरण में बताया गया है), तो उस टैब पर scripting.insertCSS() या scripting.executeScript() को कॉल करें.
  • tabs.Tab ऑब्जेक्ट दिखाने वाले एपीआई की मदद से, उस टैब के लिए यूआरएल, टाइटल, और फ़ेविकॉन पाएं (मुख्य तौर पर, "activeTab" कुछ समय के लिए होस्ट को करने की अनुमति देता है).
  • webRequest का इस्तेमाल करके, टैब में मौजूद नेटवर्क अनुरोधों को टैब के मुख्य फ़्रेम ऑरिजिन पर जाने से रोकें एपीआई. एक्सटेंशन को टैब के मुख्य फ़्रेम ऑरिजिन के लिए, कुछ समय के लिए होस्ट की अनुमतियां मिलती हैं.

ActiveTab शुरू करना

उपयोगकर्ता के ये जेस्चर (हाव-भाव) "activeTab" की अनुमति को चालू करते हैं: