Manifest V3 में एक्सटेंशन ऐक्शन

Chrome एक्सटेंशन लॉन्च होने के बाद से, इस प्लैटफ़ॉर्म ने डेवलपर को एक्सटेंशन दिखाने की अनुमति दी है कार्रवाइयों का इस्तेमाल करके सीधे टॉप लेवल Chrome यूज़र इंटरफ़ेस (यूआई) में काम करने की सुविधा पाएं. कार्रवाई एक आइकॉन बटन होता है, कोई पॉप-अप खोल सकता है या एक्सटेंशन में कुछ फ़ंक्शन ट्रिगर कर सकता है. ऐतिहासिक रूप से, Chrome दो विंडो में काम करता था कार्रवाइयां, ब्राउज़र की कार्रवाइयां, और पेज पर की जाने वाली कार्रवाइयां; मेनिफ़ेस्ट V3 ने नए chrome.action एपीआई में उपलब्ध सुविधाएं.

एक्सटेंशन कार्रवाइयों का संक्षिप्त इतिहास

मेनिफ़ेस्ट V3 में chrome.action खुद नया है. हालांकि, इसके बेसिक फ़ंक्शन की मदद से यह काम किया जा सकता है जब एक्सटेंशन पहली बार जनवरी, 2010 में स्थिर स्थिति में पहुंच गए. पहला स्टेबल Chrome के एक्सटेंशन प्लैटफ़ॉर्म के रिलीज़ होने पर, दो अलग-अलग तरह की कार्रवाइयों का इस्तेमाल किया जा सकता है: ब्राउज़र कार्रवाइयां और पेज पर की जाने वाली कार्रवाइयां शामिल हैं.

ब्राउज़र कार्रवाइयों से एक्सटेंशन डेवलपर को मुख्य Google Chrome टूलबार में " दाईं ओर लिखा जा सकता है" (सोर्स) और उपयोगकर्ताओं को का इस्तेमाल करें. दूसरी ओर, पेज से जुड़ी कार्रवाइयां इनका मकसद "ऐसी कार्रवाइयां दिखाना जो मौजूदा पेज पर की जा सकती हैं, लेकिन वे सभी पेजों पर लागू नहीं होती हैं" (सोर्स).

खोज इतिहास में एक पेज कार्रवाई (बाएं) दिखाई देती है, जो यह बताती है कि एक्सटेंशन इस पेज पर कुछ कर सकता है. ब्राउज़र की कार्रवाई (दाएं) हमेशा दिखती है.

दूसरे शब्दों में कहें, तो ब्राउज़र की कार्रवाइयों की वजह से, एक्सटेंशन डेवलपर को ब्राउज़र में एक स्थायी यूज़र इंटरफ़ेस (यूआई) मिलता है पेज पर की गई कार्रवाइयां सिर्फ़ तब दिखती हैं, जब एक्सटेंशन, मौजूदा पेज पर काम का हो सकता था.

दोनों तरह की कार्रवाइयां ज़रूरी नहीं थीं. इसलिए, एक्सटेंशन डेवलपर यह विकल्प चुन सकते थे कि कार्रवाइयां, पेज पर होने वाली कार्रवाई या ब्राउज़र कार्रवाई (कई कार्रवाइयों के बारे में बताने की अनुमति नहीं है).

करीब छह साल बाद, Chrome 49 ने एक्सटेंशन के लिए एक नया यूज़र इंटरफ़ेस (यूआई) मॉडल पेश किया. मदद करने के लिए उपयोगकर्ताओं को पता है कि उनके पास कौन-कौनसे एक्सटेंशन थे, तो Chrome ने क्लिक किया जा सकता है. उपयोगकर्ता "ओवरफ़्लो" कर सकते हैं Chrome मेनू में एक्सटेंशन जोड़ सकते हैं.

छिपे हुए एक्सटेंशन आइकॉन Chrome मेन्यू में दिखेंगे.

हर एक्सटेंशन के लिए एक आइकॉन दिखाने के लिए, इस अपडेट में दो अहम बदलाव भी हुए हैं Chrome के यूज़र इंटरफ़ेस (यूआई) में एक्सटेंशन ने किस तरह काम किया. सबसे पहले, सभी एक्सटेंशन ने टूलबार में आइकॉन दिखाने शुरू किए. अगर एक्सटेंशन में कोई आइकॉन नहीं था, तो Chrome इसके लिए अपने-आप एक आइकॉन जनरेट करेगा. दूसरा, पेज पर की जाने वाली कार्रवाइयां उन्हें ब्राउज़र कार्रवाइयों के साथ टूलबार पर ले जाया गया और उन्हें अंतर करने का मौका दिया गया उनके "शो" के बीच में और "छिपाएं" के विकल्प का इस्तेमाल करें राज्य.

बंद किए गए पेज की कार्रवाई (बाएं) करने पर टूलबार में ग्रेस्केल इमेज रेंडर होती है, जबकि चालू (दाईं ओर) कार्रवाई पूरी तरह से रंगीन होती है.

इस बदलाव ने पेज कार्रवाई एक्सटेंशन को उम्मीद के मुताबिक काम करते रहने की अनुमति दी, लेकिन यह भी कम हो गया की भूमिका निभाई है. यूज़र इंटरफ़ेस (यूआई) को फिर से डिज़ाइन करने का एक असर यह था कि पेज पर की जाने वाली कार्रवाइयां ब्राउज़र कार्रवाइयों के ज़रिए प्रभावी रूप से शामिल किया जाता है. टूलबार में सभी एक्सटेंशन मौजूद होने की वजह से, उपयोगकर्ता उम्मीद है कि किसी एक्सटेंशन के टूलबार आइकॉन पर क्लिक करने से एक्सटेंशन, और ब्राउज़र की कार्रवाइयां शुरू होंगी Chrome एक्सटेंशन के लिए एक बढ़ता हुआ महत्वपूर्ण इंटरैक्शन बन गया.

मेनिफ़ेस्ट V3 में किए गए बदलाव

साल 2016 में एक्सटेंशन यूज़र इंटरफ़ेस (यूआई) के बाद से, Chrome के यूज़र इंटरफ़ेस (यूआई) और एक्सटेंशन में लगातार बदलाव हो रहे हैं फिर से डिज़ाइन किया गया, लेकिन ब्राउज़र कार्रवाइयों और पेज कार्रवाइयों में कोई बदलाव नहीं हुआ है. इसका मतलब है कि हमने मेनिफ़ेस्ट V3 की मदद से, एक्सटेंशन प्लैटफ़ॉर्म को आधुनिक बनाने के तरीके की प्लानिंग शुरू की.

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

Action API डालें; chrome.action, chrome.browserAction से सबसे ज़्यादा मिलता-जुलता है, लेकिन यह कुछ खास अंतर हैं.

सबसे पहले, chrome.action में getUserSettings() नाम का नया तरीका उपलब्ध है. यह तरीका इससे एक्सटेंशन डेवलपर को यह जांचने का तरीका मिलता है कि क्या उपयोगकर्ता ने अपने एक्सटेंशन की कार्रवाई को टूलबार.

let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);

"getUserSettings" इस काम की क्षमता के लिए कुछ असामान्य नाम जैसा लग सकता है, जो कि, "पिन किया गया" है, लेकिन Chrome में कार्रवाइयों के इतिहास से पता चलता है कि ब्राउज़र का यूज़र इंटरफ़ेस (यूआई) इससे ज़्यादा तेज़ी से बदलता है एक्सटेंशन एपीआई काम करते हैं. इस एपीआई की मदद से, हमारा मकसद है कि उपयोगकर्ता की कार्रवाइयों से जुड़ी सेटिंग को सार्वजनिक किया जाए जेनरिक इंटरफ़ेस का इस्तेमाल किया गया है, ताकि आने वाले समय में एपीआई चर्न आउट को कम किया जा सके. इससे दूसरे ब्राउज़र वेंडर को भी सार्वजनिक तौर पर विज्ञापन दिखाने की सुविधा मिलती है UserSettings ऑब्जेक्ट में ब्राउज़र के हिसाब से बने यूज़र इंटरफ़ेस (यूआई) के कॉन्सेप्ट तरीका.

दूसरा, एक्सटेंशन की कार्रवाई के आइकॉन और चालू/बंद होने की स्थिति को इसका इस्तेमाल करके कंट्रोल किया जा सकता है एलान वाला Content API. ऐसा करना ज़रूरी है, क्योंकि इससे एक्सटेंशन को लोगों की ब्राउज़िंग गतिविधि के हिसाब से प्रतिक्रिया देने की सुविधा मिलती है उनके देखे गए पेजों के कॉन्टेंट या उनके यूआरएल को ऐक्सेस किए बिना व्यवहार कर सकता है. उदाहरण के लिए, मान देखें कि जब उपयोगकर्ता example.com के पृष्ठों पर जाता है तो कोई एक्सटेंशन अपनी कार्रवाई को कैसे सक्षम कर सकता है.

// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: {hostSuffix: '.example.com'},
          })
        ],
        actions: [new chrome.declarativeContent.ShowAction()]
      }
    ]);
  });
});

ऊपर दिया गया कोड करीब-करीब इसके जैसा है कि एक्सटेंशन, पेज कार्रवाई के साथ क्या करेगा. सिर्फ़ अंतर यह है कि मेनिफ़ेस्ट V3 में हमने यूआरएल के बजाय declarativeContent.ShowAction का इस्तेमाल किया मेनिफ़ेस्ट वर्शन 2 में declarativeContent.ShowPageAction.

आखिर में, कॉन्टेंट ब्लॉकर, declarativeNetRequest API का इस्तेमाल setExtensionActionOptions) तरीके की मदद से, किसी दिए गए टैब के लिए एक्सटेंशन के ज़रिए ब्लॉक किए गए अनुरोध. यह सुविधा ज़रूरी है, क्योंकि यह संवेदनशील ब्राउज़िंग मेटाडेटा को सार्वजनिक किए बिना, असली उपयोगकर्ताओं को जानकारी देने के लिए कॉन्टेंट ब्लॉकर करना है.

आखिर में खास जानकारी

मेनिफ़ेस्ट V3 के लिए, हमने Chrome एक्सटेंशन प्लैटफ़ॉर्म को आधुनिक बनाया. कई ऐसे मामले जिनमें नई टेक्नोलॉजी पर स्विच करने के साथ-साथ, हमारे एपीआई प्लैटफ़ॉर्म को आसान बनाना भी शामिल है; हमारा मकसद यही था.

हमें उम्मीद है कि इस पोस्ट से, मेनिफ़ेस्ट V3 प्लैटफ़ॉर्म के इस खास कोने के बारे में आपको कुछ जानने में मदद मिली होगी. यहां की यात्रा पर हूं Chrome टीम भविष्य में ब्राउज़र एक्सटेंशन के प्रति किस तरह से प्रभाव डालने वाली है, इस बारे में अधिक जानने के लिए, प्लैटफ़ॉर्म विज़न और मेनिफ़ेस्ट V3 पेजों की खास जानकारी डेवलपर दस्तावेज़ पढ़ें. आप यहां पर अन्य डेवलपर के साथ Chrome एक्सटेंशन के बारे में भी चर्चा कर सकते हैं: chromium-extensions Google ग्रुप.