Chrome 117 बीटा

सीएसएस ग्रिड सबग्रिड, सीएसएस के लिए एंट्री और एग्ज़िट ऐनिमेशन की सुविधा, अरे ग्रुपिंग, इटरेटर हेल्पर वगैरह.

जब तक अलग से न बताया जाए, तब तक बताए गए बदलाव Android, ChromeOS, Linux, macOS, और Windows के लिए, Chrome बीटा चैनल के नए रिलीज़ पर लागू होते हैं. यहां दिए गए लिंक की मदद से या ChromeStatus.com पर दी गई सूची से सुविधाओं के बारे में ज़्यादा जानें. Chrome 117, 16 अगस्त, 2023 से बीटा वर्शन में उपलब्ध है. आप डेस्कटॉप के लिए Google.com या Android पर Google Play Store पर जाकर नया वर्शन डाउनलोड कर सकते हैं.

सीएसएस

इस रिलीज़ में छह नई सीएसएस सुविधाएं जोड़ी गई हैं. पहली तीन प्रॉपर्टी, अलग-अलग प्रॉपर्टी पर ट्रांज़िशन चालू करने के लिए काम का हिस्सा हैं, जो एंट्री और एग्ज़िट ऐनिमेशन को चालू करते हैं.

@starting-style का नियम

इस नियम के तहत, लेखक पहले स्टाइल अपडेट होने पर सीएसएस ट्रांज़िशन शुरू कर सकते हैं.

सीएसएस ट्रांज़िशन, एलिमेंट के पहले स्टाइल अपडेट पर, शुरुआती स्टाइल से जुड़े ट्रांज़िशन को ट्रिगर नहीं करते. इसके अलावा, ये तब भी नहीं होते, जब डिसप्ले टाइप none से किसी दूसरे टाइप में बदल जाता है. ऐसा इसलिए किया जाता है, ताकि शुरुआती स्टाइल से अचानक होने वाले ट्रांज़िशन से बचा जा सके. पहले स्टाइल के अपडेट से ट्रांज़िशन शुरू करने के लिए, अब आप @starting-style नियम के अंदर से स्टाइल लागू कर सकते हैं. उदाहरण के लिए, नीचे दी गई सीएसएस, किसी div के लिए पहले स्टाइल अपडेट पर बैकग्राउंड-रंग का ट्रांज़िशन शुरू करती है. उसे हरे से नींबू रंग में बदला जाता है:

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

ओवरले प्रॉपर्टी

overlay प्रॉपर्टी की मदद से डेवलपर, एग्ज़िट ट्रांज़िशन के लिए एलिमेंट को टॉप लेयर में रख सकते हैं. ओवरले प्रॉपर्टी यह बताने के लिए जोड़ी जाती है कि कोई एलिमेंट ऊपरी लेयर में है या नहीं. इसमें दो वैल्यू हो सकती हैं: none या auto.

सीएसएस ट्रांज़िशन-व्यवहार प्रॉपर्टी

transition-behavior सीएसएस प्रॉपर्टी, transition प्रॉपर्टी का काफ़ी हिस्सा है. इसकी वजह से, ट्रांज़िशन में अलग-अलग प्रॉपर्टी का इस्तेमाल किया जा सकता है. ट्रांज़िशन- बिहेवियर के लिए allow-discrete वैल्यू तय करने पर, अलग-अलग प्रॉपर्टी के लिए ऐनिमेशन शुरू हो जाएंगे. साथ ही, ये प्रॉपर्टी अपनी शुरुआती वैल्यू से 50% पर फ़ाइनल वैल्यू पर सेट हो जाएंगी. ऐसे ट्रांज़िशन के लिए जहां display: none और content-visibility: hidden शुरुआती या आखिरी वैल्यू में से एक हैं, वहां दिखने वाली वैल्यू का इस्तेमाल, ट्रांज़िशन की पूरी अवधि के लिए किया जाएगा.

सीएसएस ग्रिड सबग्रिड की वैल्यू

grid-template-columns और grid-template-rows के लिए subgrid वैल्यू अब Chrome में लागू कर दी गई है. इस वैल्यू की मदद से नेस्ट किया गया ग्रिड, पंक्तियों, कॉलम या दोनों के लिए नई परिभाषा बनाने के बजाय, अपने पैरंट ट्रैक पर तय किए गए ट्रैक का इस्तेमाल कर पाता है.

सीएसएस टेक्स्ट-रैप: आकर्षक

सीएसएस text-wrap प्रॉपर्टी के लिए pretty वैल्यू, स्पीड के बजाय सबसे अच्छे लेआउट के लिए ऑप्टिमाइज़ होती है. यह टेक्स्ट के लिए है, इसलिए इसमें कई लाइन होनी चाहिए. pretty का इस्तेमाल करके, डेवलपर साफ़ तौर पर लेआउट के तरीके के लिए ऑप्ट इन कर रहा है. यह तरीका wrap से धीमा हो सकता है. इस तरीके से परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सकता है. Chrome का मौजूदा वर्शन ऑर्फ़न्स के हिसाब से ऑप्टिमाइज़ होता है, ताकि टेक्स्ट के पैराग्राफ़ के नीचे एक शब्द न दिखे.

Chrome 117 में टेक्स्ट-रैप का डेमो: प्रिटी आज़माएं और देखें कि वैल्यू, टेक्स्ट प्रज़ेंटेशन को कैसे बदलती है.

कंटेन-इंट्रिन्सिक-साइज़: अपने-आप कोई नहीं समर्थन

यह सुविधा मौजूदा contain-intrinsic-size सिंटैक्स में auto && none को भी शामिल करती है.

वेब एपीआई

सरणी ग्रुपिंग

अरे ग्रुपिंग एक बेहद सामान्य ऑपरेशन है, जो एसक्यूएल के 'ग्रुप BY क्लॉज़' और Map किराये की प्रोग्रामिंग के ज़रिए सबसे सही तरीके से समझा जा सकता है. (इसका इस्तेमाल Maps-group-reduce के बारे में बेहतर तरीके से किया जाता है). डेटा को ग्रुप में जोड़ने की सुविधा से डेवलपर, सबसे ज़्यादा ऑर्डर वाले डेटासेट का हिसाब लगा सकते हैं. जैसे, एक जैसे उपयोगकर्ताओं के ग्रुप की औसत उम्र या किसी वेबपेज के लिए हर दिन की एलसीपी वैल्यू. इस सुविधा में, Object.groupBy और Map.groupBy स्टैटिक तरीके जोड़कर इसे चालू किया जाता है. ऑब्जेक्ट तरीका, एक सादा ऑब्जेक्ट दिखाता है. इसमें ग्रुप, प्रॉपर्टी की कुंजियां होते हैं. मैप वाला तरीका, मैप दिखाता है, जिसमें कुंजियां आर्बिट्रेरी वैल्यू हो सकती हैं.

साइट-डेटा मिटाएं हेडर से क्लाइंट हिंट हटाएं

वेबसाइटें अब Clear-Site-Data: "clientHints" का इस्तेमाल करके, क्लाइंट संकेत की कैश मेमोरी को मिटा पाएंगी. "कुकी", "कैश" या "*" होने पर, अब क्लाइंट के दिए गए संकेत भी मिट जाएंगे एक ही हेडर से टारगेट किए जाते हों. इसकी वजह यह है कि अगर उपयोगकर्ता, यूज़र इंटरफ़ेस (यूआई) में कुकी को हटा देता है, तो क्लाइंट संकेत भी पहले ही मिटा दिए जाते हैं. इसका मतलब है कि क्लाइंट संकेत, कैश मेमोरी है और वह वाइल्डकार्ड टारगेट के मुताबिक होना चाहिए.

साइट-डेटा हेडर वाइल्डकार्ड सिंटैक्स मिटाएं

वेबसाइटें अब Clear-Site-Data: "*" भेजकर सभी स्टोरेज टारगेट ("कुकी", "कैश", और "स्टोरेज") खाली कर सकेंगी. ध्यान दें कि Chrome "executionContexts" को हटाने की सुविधा नहीं देता लेकिन अगर हमने आने वाले समय में इसे "*" टारगेटिंग (विज्ञापन के लिए सही दर्शक चुनना) के लिए किसी भी हेडर में जोड़ा हो उसे भी साफ़ कर देगा.

customElements.getName

customElements.getName() तरीका, दी गई कस्टम एलिमेंट डेफ़िनिशन के टैग का नाम दिखाता है.

इटरेटर हेल्पर

इटरेटर हेल्पर, इटरेटर प्रोटोटाइप पर नए तरीके हैं. इनका इस्तेमाल सामान्य इस्तेमाल और इटरेटर के इस्तेमाल की अनुमति देने के लिए किया जाता है.

EventTarget इंटरफ़ेस से कैप्चर कंट्रोलर को डिराइवर करें

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

PerformanceResourceTiming की डिलीवरी का टाइप

PerformanceResourceTiming की deliveryType प्रॉपर्टी से पता चलता है कि संसाधन कैसे डिलीवर किया गया. उदाहरण के लिए, कैश मेमोरी से डिलीवर किए गए संसाधन (फ़िलहाल, transferSize के ज़रिए दिखाए गए हैं) और ऐसे नेविगेशन जिन्हें पिछले पेज से प्रीफ़ेच किया गया था.

यूआरएल सेटर में पोर्ट ओवरफ़्लो की जांच

url.port को सेट करते समय, पोर्ट वैल्यू की जांच की जाएगी. वे सभी वैल्यू अब मान्य नहीं रहेंगी जो 16-बिट वाली संख्या की सीमा से ज़्यादा होती हैं. उदाहरण के लिए, बदलाव के बाद नीचे दी गई स्क्रिप्ट अलग तरह से काम करती है:

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

बदलाव के पहले, आउटपुट 65536 है. बदलाव के बाद आउटपुट 80 होगा.

प्राइवेट स्टेट टोकन एपीआई

यह एक नया एपीआई है. इसकी मदद से, सभी साइटों पर सीमित निजी सिग्नल लागू किए जाते हैं. इसके लिए, तीसरे पक्ष की कुकी जैसे क्रॉस-साइट स्थायी आइडेंटिफ़ायर का इस्तेमाल नहीं किया जाता. तीसरे पक्ष की कुकी का इस्तेमाल करने वाले धोखाधड़ी-विरोधी तरीके, तीसरे पक्ष की कुकी का इस्तेमाल बंद होने के बाद काम नहीं करेंगे. Private State Token API, धोखाधड़ी रोकने वाले सिग्नल जनरेट या उनके बारे में नहीं बताता है: यह पहले पक्ष और टोकन जारी करने वालों पर निर्भर करता है. इसके बजाय, एपीआई इन सिग्नल में ट्रांसफ़र की जाने वाली जानकारी पर सीमाएं लागू करके निजता बनाए रखता है. यह एपीआई, प्राइवसी पास प्रोटोकॉल के एक वैरिएंट पर आधारित है. इसे आईईटीएफ़ के हिसाब से स्टैंडर्ड बनाने की प्रोसेस में है. इस मॉडल को प्राइवसी पास के प्रोटोकॉल का, वेब पर दिखने वाला फ़ॉर्म माना जा सकता है. एपीआई की खास बातें, नए वर्शन और टोकन के टाइप के लिए अपडेट की जाएंगी. साथ ही, इन्हें Privacy Pass की कामकाजी ग्रुप की विशेषताओं के साथ अप-टू-डेट रखा जाएगा. अनुमानित बदलाव, पहले से मौजूद क्रिप्टोग्राफ़िक प्रोटोकॉल और टोकन जारी करने के कोड में होंगे: डेवलपर के फ़ेच एपीआई को जारी करने और उन्हें रिडीम करने की प्रोसेस में, हम किसी बदलाव की उम्मीद नहीं करते. Private State Token API को पहले Trust Token API के नाम से जाना जाता था. इसका नाम बदला गया है, ताकि इसमें मौजूद सिमेंटिक्स को ज़्यादा सटीक तरीके से कैप्चर किया जा सके. साथ ही, लोगों के लिए निजता से जुड़े फ़ायदों को हाइलाइट किया जा सके.

यूआरएल स्टैंडर्ड के साथ काम करने वाला IPv4 एम्बेड किया गया IPv6 होस्ट पार्सर

वेब के यूआरएल स्टैंडर्ड का सख्ती से पालन करने के लिए, IPv4 एम्बेड किए गए IPv6 होस्ट पार्सर को पार्स करने के व्यवहार को अपडेट किया जाएगा. आईपीवी6 पते पर ये पाबंदियां लगाई गई हैं:

  • एम्बेड किए गए IPv4 पते के हमेशा चार हिस्से होने चाहिए.
  • http://[::1.2] जैसे चार से कम हिस्सों वाले पते अब मान्य नहीं रहेंगे. यह सुविधा, यूआरएल इंटरऑप 2023 का हिस्सा है.

यूआरएल: "%00" को मंज़ूरी दें मान्य यूआरएल पाथ के तौर पर

अगर URL के पथ भाग में "%00" शामिल है, तो Chrome वर्तमान में किसी URL को अमान्य मानता है (या शून्य) से जुड़ा होता है, जो यूआरएल के मानक के मुताबिक नहीं है. उदाहरण के लिए, नीचे दिया गया टेस्ट Chrome में फ़ेल हो जाता है, क्योंकि new URL(...) एक अमान्य यूआरएल अपवाद दिखाता है.

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

यूआरएल स्टैंडर्ड के मुताबिक, यूआरएल पाथ में किसी भी वर्ण या बाइट के क्रम से यूआरएल अमान्य नहीं होना चाहिए. यह बदलाव Chrome को उस मानक के मुताबिक अपडेट कर देता है.

WebRTC आरटीपी के हेडर एक्सटेंशन का कंट्रोल

WebRTC RTCRtpTransceiver API का इस्तेमाल करके, यह तय करें कि कौनसे आरटीपी हेडर एक्सटेंशन के लिए बातचीत की जा रही है.

VideoEncoder में प्रति फ़्रेम क्वांटाइज़र

"क्वांटाइज़र" जोड़ता है VideoEncoder के लिए VideoEncoderBitrateMode. इससे AV1, VP9, और AVC वीडियो कोडेक के लिए, हर फ़्रेम के लिए क्वांटाइज़र पैरामीटर तय किया जा सकता है.

requestDevice() में WebUSB exclusionFilters का विकल्प

navigator.usb.requestDevice() में मौजूद exclusionFilters विकल्प की मदद से, वेब डेवलपर कुछ डिवाइसों को ब्राउज़र पिकर से बाहर कर सकते हैं. इसका इस्तेमाल करके, उन डिवाइसों को हटाया जा सकता है जो बड़े पैमाने पर फ़िल्टर से मैच करते हैं, लेकिन काम नहीं करते.

ऑरिजिन ट्रायल चल रहा है

Chrome 117 में, ऑरिजिन ट्रायल के लिए इन नए तरीकों के लिए ऑप्ट इन किया जा सकता है.

Shared Brotli के साथ कंप्रेशन डिक्शनरी भेजने की सुविधा

इस सुविधा की मदद से, पहले से तय किए गए जवाबों को इस्तेमाल करने की सुविधा मिलती है. Brotli-कंप्रेस करने वाले एचटीटीपी रिस्पॉन्स के लिए एक्सटर्नल डिक्शनरी.

कंप्रेशन डिक्शनरी ट्रांसपोर्ट के ऑरिजिन ट्रायल के लिए, रजिस्टर करें.

WebSQL के बंद होने का ट्रायल

Chrome से WebSQL को हटाया जा रहा है. इस पर निर्भर करने वाली साइटों को Wasm के ज़रिए SQLite पर माइग्रेट करने का सुझाव दिया जाता है.

पुराने वर्शन को बंद करने की इस ट्रायल की मदद से, उन डेवलपर को Chrome 123 (मार्च 2024) तक WebSQL का इस्तेमाल जारी रखने की सुविधा मिलेगी जिन्हें माइग्रेशन के लिए ज़्यादा समय चाहिए. WebSQL के बंद होने के ट्रायल के लिए रजिस्टर करें.

टैब किए गए वेब ऐप्लिकेशन

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

टैब वाले वेब ऐप्लिकेशन के ऑरिजिन ट्रायल के लिए रजिस्टर करें.

बंद करना और हटाना

Chrome के इस वर्शन में, सुविधाओं को बंद करने और हटाने के बारे में नीचे बताया गया है. पहले से तय, बंद हो चुके, और पहले से हटाए गए तरीकों की सूची के लिए ChromeStatus.com पर जाएं.

Chrome की इस रिलीज़ में दो सुविधाएं बंद कर दी गई हैं.

अनलोड इवेंट को रोकें

Chrome 117, unload इवेंट हैंडलर को बंद करने की प्रोसेस शुरू करेगा. अगर आपकी साइट इनका इस्तेमाल करती है, तो ज़्यादा जानकारी के लिए, आपको unload को रोकने के बारे में खास जानकारी देने वाली पोस्ट पढ़ने का सुझाव दिया जाता है.

TLS SHA-1 सर्वर हस्ताक्षरों का बहिष्कार करें

TLS हैंडशेक के दौरान, सर्वर सिग्नेचर के लिए, Chrome SHA-1 का इस्तेमाल करके सिग्नेचर एल्गोरिदम की सुविधा हटा रहा है. इससे, पहले से हटाए जा चुके सर्वर सर्टिफ़िकेट या क्लाइंट सर्टिफ़िकेट में SHA-1 की सुविधा पर कोई असर नहीं पड़ता, जो अब भी काम करता रहेगा.

Chrome की इस रिलीज़ में चार सुविधाएं हटा दी गई हैं.

[WebRTC] कॉलबैक आधारित लेगसी getStats() को अनशिप करें

RTCPeerConnection में getStats() के दो वर्शन हैं. इनमें से एक, निर्देशों का पालन करके, प्रॉमिस रिज़ॉल्व करके रिपोर्ट दिखाता है. वहीं, दूसरा वर्शन, कॉलबैक के ज़रिए पहले आर्ग्युमेंट के तौर पर, बिलकुल अलग रिपोर्ट दिखाता है. कॉलबैक-आधारित कॉल को अब हटा दिया गया है.

माइग्रेशन के बारे में ज़्यादा जानकारी पाने और ज़्यादा समय के लिए क्या करना चाहिए, यह जानने के लिए लेगसी getStats() माइग्रेशन गाइड देखें.

WebRTC getStats datachannelIdentifier के लिए, -1 वैल्यू को हटाना

WebRTC getStats API, एक dataChannelIdentifier प्रॉपर्टी दिखाता है. अब यह "-1" वैल्यू नहीं देगा उन मामलों में जहां डेटाचैनल कनेक्शन स्थापित होने से पहले आंकड़ों के लिए पूछताछ की जाती है. इसके बजाय, शब्दकोश के सदस्य को छोड़ दिया जाएगा.

WebRTC getStats एन्कोडर लागू करने और डिकोड करने वाले बदलाव को हटाने के लिए, "जानकारी नहीं है"

WebRTC getStats API, आउटबाउंड और इनबाउंड वीडियो के लिए, एन्कोडर और डिकोडर को लागू करने वाले नाम दिखाता है. ऐसे मामलों में जहां वीडियो फ़्रेम को कोड में बदलने या डिकोड करने से पहले आंकड़ों की क्वेरी की जाती है, वहां यह अब “अज्ञात” वैल्यू नहीं देगा. इसके बजाय, शब्दकोश के सदस्य को छोड़ दिया जाएगा.

सीएसएस प्रॉपर्टी -webkit-highlight

वह सीएसएस प्रॉपर्टी -webkit-highlight हटाएं जिसका मकसद टेक्स्ट को हाइलाइट करना है, लेकिन स्टैंडर्ड तौर पर कभी नहीं. Chromium में इसका कोई असर नहीं दिखता. इसे पार्स किया जाता है, लेकिन कॉन्टेंट को रेंडर करने में कभी इसका इस्तेमाल नहीं किया जाता. इस प्रॉपर्टी को साल 2014 में WebKit से हटा दिया गया. साथ ही, MDN पर इसे 'अब काम नहीं करता' के तौर पर मार्क कर दिया गया. साथ ही, इसे हाल ही में सीएसएस हाइलाइट स्यूडो स्पेसिफ़िकेशन से बदल दिया गया है.