एक्सटेंशन के लिए Chrome 116 में नया क्या है

Chrome 116 का बीटा वर्शन अब उपलब्ध है. इसमें Chrome एक्सटेंशन डेवलपर के लिए कई दिलचस्प अपडेट शामिल हैं. आइए, इन नई सुविधाओं के बारे में थोड़ा जानें.

प्रोग्राम के हिसाब से साइड पैनल खोलना

साइड पैनल, Chrome एक्सटेंशन में सबसे ज़्यादा अनुरोध की जाने वाली सुविधाओं में से एक है. यह Chrome के 114 वर्शन से उपलब्ध है. साइड पैनल एपीआई लॉन्च करने के बाद, हमें सबसे पहले यह सुझाव मिला था कि डेवलपर को प्रोग्राम के ज़रिए साइड पैनल खोलने का तरीका चाहिए. और यह है: chrome.sidePanel.open अब बीटा वर्शन में उपलब्ध है. इसका इस्तेमाल करके, उपयोगकर्ता के इंटरैक्शन के जवाब में, प्रोग्राम के हिसाब से एक्सटेंशन का साइड पैनल खोला जा सकता है. जैसे, संदर्भ मेन्यू पर क्लिक करना:

chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === 'openSidePanel') {
    // This will open the panel in all the pages on the current window.
    chrome.sidePanel.open({ windowId: tab.windowId });
  }
});

सेवा वर्कर में WebSocket की सुविधा

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

इसका इस्तेमाल, सर्वर से मैसेज मिलने का इंतज़ार करते समय, सेवा वर्कर को चालू रखने के लिए किया जा सकता है. भले ही, अगला मैसेज मिलने में 30 सेकंड से ज़्यादा समय लगे:

function keepAlive() {
  const keepAliveIntervalId = setInterval(
    () => {
      if (webSocket) {
        webSocket.send('keepalive');
      } else {
        clearInterval(keepAliveIntervalId);
      }
    },
    // It's important to pick an interval that's shorter than 30s, to
    // avoid that the service worker becomes inactive.
    20 * 1000
  );
}

ज़्यादा जानकारी के लिए, हमारी नई वेबसोकेट गाइड और सैंपल देखें.

सर्विस वर्कर के लिए बेहतर 'काइलिप्ट'

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

बैकग्राउंड में ऑडियो और वीडियो रिकॉर्ड करना

मेनिफ़ेस्ट V2 और मेनिफ़ेस्ट V3 के बीच का एक और अंतर खत्म हो गया है: tabCapture और ऑफ़स्क्रीन दस्तावेज़ों का इस्तेमाल करके, बैकग्राउंड में ऑडियो और वीडियो रिकॉर्ड किया जा सकता है. उपयोगकर्ता के जेस्चर के बाद स्ट्रीम आईडी पाने के लिए, सेवा वर्कर में chrome.tabCapture एपीआई का इस्तेमाल करें. इसके बाद, रिकॉर्डिंग शुरू करने के लिए, इसे ऑफ़स्क्रीन दस्तावेज़ में पास किया जा सकता है.

इसके काम करने का तरीका जानने के लिए, हमारी अपडेट की गई tabCapture गाइड देखें. इसके अलावा, इसका काम करने का उदाहरण देखने के लिए, Tab Capture - Recorder सैंपल देखें.

नया एपीआई: runtime.getContexts()

नए runtime.getContexts() एपीआई की मदद से, अपने एक्सटेंशन से जुड़े चालू कॉन्टेक्स्ट की जानकारी फ़ेच की जा सकती है. उदाहरण के लिए, इसका इस्तेमाल करके यह देखा जा सकता है कि कोई ऑफ़स्क्रीन दस्तावेज़ चालू है या नहीं:

const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
    (c) => c.contextType === 'OFFSCREEN_DOCUMENT'
  );

ऑफ़स्क्रीन होने की नई वजह: GEOLOCATION

geolocation को ऑफ़स्क्रीन दस्तावेज़ इस्तेमाल करने की मान्य वजह के तौर पर जोड़ा गया है. Offscreen API का इस्तेमाल करके, एक्सटेंशन की भौगोलिक जगह की जानकारी पाने के तरीके के बारे में ज़्यादा जानने के लिए, जगह की जानकारी का इस्तेमाल करने से जुड़ी हमारी गाइड देखें.

chrome.action.setBadgeText()

मेनिफ़ेस्ट V2 और मेनिफ़ेस्ट V3 के बीच अंतर को ठीक करने के लिए, action.setBadgeText को अपडेट किया गया है. null को action.setBadgeText पर खाली स्ट्रिंग या पास करने से, बताए गए टैब के बैज टेक्स्ट को हटा दिया जाएगा और इसके बजाय, ग्लोबल बैज टेक्स्ट डिफ़ॉल्ट रूप से लागू हो जाएगा.

action.setBadgeText({tabId: tabId, text: ''});

खास जानकारी: मेनिफ़ेस्ट V3 की ओर एक और कदम

बेहतर Service Worker लाइफ़टाइम सपोर्ट और अपडेट किए गए TabCapture API की मदद से, हम मेनिफ़ेस्ट V2 और V3 के बीच सुविधाओं के अंतर को कम करने के अपने लक्ष्य पर लगातार काम कर रहे हैं. मौजूदा स्थिति के बारे में जानने के लिए, पहले से मालूम समस्याओं वाला पेज देखें.