Chrome के हर वर्शन में, हमें प्रॉडक्ट, उसकी परफ़ॉर्मेंस, और वेब प्लैटफ़ॉर्म की सुविधाओं में कई अपडेट और सुधार दिखते हैं.
Chrome 50 (बीटा वर्शन के रिलीज़ होने की अनुमानित तारीख: 10 से 17 मार्च) में, Chrome में कई बदलाव किए गए हैं. इस सूची में किसी भी समय बदलाव किया जा सकता है.
असुरक्षित कॉन्टेक्स्ट पर, AppCache का इस्तेमाल बंद कर दिया गया है
खास जानकारी: क्रॉस-साइट स्क्रिप्टिंग को रोकने के लिए, हम असुरक्षित ऑरिजिन पर AppCache का इस्तेमाल बंद कर रहे हैं. हमें उम्मीद है कि Chrome 52 में यह सुविधा सिर्फ़ उन ऑरिजिन पर काम करेगी जो एचटीटीपीएस पर कॉन्टेंट दिखाते हैं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग
AppCache एक ऐसी सुविधा है जो किसी ऑरिजिन को ऑफ़लाइन और लगातार ऐक्सेस करने की अनुमति देती है. यह क्रॉस-साइट स्क्रिप्टिंग हमले के लिए, प्रिविलेज एस्कलेशन का एक बेहतरीन तरीका है. असुरक्षित ऑरिजिन से बेहतर सुविधाओं को हटाने के बड़े मकसद के तहत, यह बदलाव किया जा रहा है.
Chrome, इस अटैक वेक्टर को सिर्फ़ एचटीटीपीएस पर अनुमति देकर हटा रहा है. हम Chrome 50 में एचटीटीपी सहायता को बंद कर रहे हैं और उम्मीद करते हैं कि Chrome 52 में इसे पूरी तरह से हटा दिया जाएगा.
Document.defaultCharset को निकाला गया
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया: स्पेसिफ़िकेशन का पालन बेहतर बनाने के लिए, document.defaultCharset
को हटा दिया गया है.
हटाने का इंटेंट | Chromestatus ट्रैकर | CRBug से जुड़ी समस्या
Chrome 49 में काम न करने वाली document.defaultCharset
, रीड-ओनली प्रॉपर्टी है. यह उपयोगकर्ता की रीजनल सेटिंग के आधार पर, सिस्टम की डिफ़ॉल्ट कैरेक्टर एन्कोडिंग को रिटर्न करती है. ब्राउज़र, एचटीटीपी रिस्पॉन्स या पेज में एम्बेड किए गए मेटा टैग में, वर्ण कोड में बदलने की जानकारी का इस्तेमाल इस तरह करते हैं कि इस वैल्यू को बनाए रखना फ़ायदेमंद नहीं है.
इसके बजाय, एचटीटीपी हेडर में बताई गई पहली वैल्यू पाने के लिए, document.characterSet
का इस्तेमाल करें. अगर यह मौजूद नहीं है, तो आपको <meta>
एलिमेंट के charset
एट्रिब्यूट (उदाहरण के लिए, <meta
charset="utf-8">
) में बताई गई वैल्यू मिलेगी. आखिर में, अगर इनमें से कोई भी उपलब्ध नहीं है, तो document.characterSet
उपयोगकर्ता की सिस्टम सेटिंग होगी.
इस बारे में ज़्यादा जानने के लिए, इस GitHub समस्या पर जाएं
सब-सोर्स एट्रिब्यूट को लिंक एलिमेंट से हटा दिया गया
खास जानकारी: HTMLLinkElement
के rel
एट्रिब्यूट के लिए, subresource
वैल्यू का इस्तेमाल करने की सुविधा हटाएं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग
<link> पर subresource
एट्रिब्यूट का मकसद, ब्राउज़र के इंतज़ार के समय में किसी संसाधन को पहले से लोड करना था. ब्राउज़र किसी पेज को डाउनलोड करने के बाद, अन्य पेजों जैसे रिसॉर्स को पहले से डाउनलोड कर सकता है. इससे, जब उपयोगकर्ताओं के अनुरोध पर उन्हें ऐक्सेस किया जाता है, तो उन्हें ब्राउज़र की कैश मेमोरी से आसानी से वापस पाया जा सकता है.
subresource
एट्रिब्यूट में कई समस्याएं हैं. सबसे पहले, यह कभी भी ठीक से काम नहीं करता था. बताए गए संसाधन कम प्राथमिकता पर डाउनलोड किए गए थे. इस एट्रिब्यूट को Chrome के अलावा, किसी भी ब्राउज़र पर कभी लागू नहीं किया गया था. Chrome में इस सुविधा को लागू करने के दौरान एक गड़बड़ी हुई थी. इसकी वजह से, संसाधन दो बार डाउनलोड हो गए थे.
कॉन्टेंट को पहले से लोड करके, उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, डेवलपर के पास कई विकल्प होते हैं. इनमें से सबसे ज़्यादा पसंद किया जाने वाला विकल्प, सेवा वर्कर्स बनाना है. इससे, पहले से कैश मेमोरी में कॉन्टेंट सेव करने और Caches API का फ़ायदा लिया जा सकता है. अन्य समाधानों में, rel
एट्रिब्यूट की अन्य वैल्यू शामिल हैं. इनमें preconnect
, prefetch
, preload
, prerender
शामिल हैं. इनमें से कुछ विकल्प, प्रयोग के तौर पर उपलब्ध हैं. इसलिए, हो सकता है कि ये सभी के लिए उपलब्ध न हों.
असुरक्षित TLS वर्शन के फ़ॉलबैक को हटाना
TL;DR: TLS के कम या असुरक्षित वर्शन का इस्तेमाल करके, सर्वर को जबरन डेटा देने का तरीका हटाएं.
हटाने का इरादा | Chromestatus ट्रैकर | Chromium गड़बड़ी
ट्रांसपोर्ट लेयर सिक्योरिटी (टीएलएस), वर्शन की मोल-भाव करने की सुविधा देता है. इससे टीएलएस के नए वर्शन बनाए जा सकते हैं, जिससे इनके साथ काम करने की क्षमता पर कोई असर नहीं पड़ता. कुछ सर्वर ने इसे इस तरह से लागू किया कि ब्राउज़र को फ़ॉलबैक के तौर पर असुरक्षित एंडपॉइंट का इस्तेमाल करना पड़ा. इस वजह से, हमलावर किसी भी वेबसाइट को, TLS के कम सुरक्षित वर्शन के लिए नेगोशिएट करने के लिए मजबूर कर सकते हैं. ऐसा सिर्फ़ उन वेबसाइटों के लिए नहीं किया जा सकता जिन्हें गलत तरीके से कॉन्फ़िगर किया गया है.
जिन साइटों पर असर पड़ा है वे ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
से कनेक्ट नहीं हो पाएंगी. एडमिन को यह पक्का करना चाहिए कि उनके सर्वर का सॉफ़्टवेयर अप-टू-डेट हो. अगर समस्या अब भी हल नहीं होती है, तो सर्वर के सॉफ़्टवेयर वेंडर से संपर्क करें और देखें कि क्या समस्या ठीक करने का कोई तरीका उपलब्ध है.
KeyboardEvent.prototype.keyLocation हटाएं
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया: Keyboard.prototype.location
एट्रिब्यूट के लिए, ग़ैर-ज़रूरी उपनाम हटाएं.
हटाने का इरादा | Chromestatus ट्रैकर | Chromium गड़बड़ी
यह एट्रिब्यूट, Keyboard.prototype.location
एट्रिब्यूट का दूसरा नाम है. इससे, कीबोर्ड पर एक से ज़्यादा जगहों पर मौजूद बटनों के बीच अंतर करने में मदद मिलती है. उदाहरण के लिए, दोनों एट्रिब्यूट की मदद से डेवलपर, एक्सटेंडेड कीबोर्ड पर मौजूद दो Enter
बटन के बीच अंतर कर सकते हैं.
RTCPeerConnection के तरीकों में गड़बड़ी और सफलता के हैंडलर ज़रूरी हैं
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया: WebRTC
RTCPeerConnection तरीकों createOffer()
और createAnswer()
के लिए अब गड़बड़ी हैंडलर के साथ-साथ सक्सेस हैंडलर की भी ज़रूरत है. पहले, सिर्फ़ एक सफलता हैंडलर के साथ इन तरीकों को कॉल किया जा सकता था. हम इस तरह का
इस्तेमाल रोक देते हैं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग
Chrome 49 में, हमने एक चेतावनी जोड़ी है. यह चेतावनी तब दिखती है, जब गड़बड़ी ठीक करने वाले फ़ंक्शन को दिए बिना, setLocalDescription()
या setRemoteDescription()
को कॉल किया जाता है. Chrome 50 के बाद, गड़बड़ी को हैंडल करने वाला आर्ग्युमेंट देना ज़रूरी है.
यह इन तरीकों पर वादे करने के लिए, WebRTC स्पेसिफ़िकेशन के मुताबिक, इन तरीकों को इस्तेमाल करने की अनुमति देने का एक हिस्सा है.
यहां WebRTC के RTCPeerConnection डेमो (main.js, लाइन 126) का उदाहरण दिया गया है:
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
ध्यान दें कि setLocalDescription()
और setRemoteDescription()
, दोनों में गड़बड़ी ठीक करने वाला फ़ंक्शन है. पुराने ब्राउज़र सिर्फ़ सफलता हैंडलर की उम्मीद करते हैं. अगर गड़बड़ी हैंडलर मौजूद है, तो वे उसे अनदेखा कर देंगे. पुराने ब्राउज़र में इस कोड को कॉल करने से कोई अपवाद नहीं होगा.
आम तौर पर, प्रोडक्शन WebRTC ऐप्लिकेशन के लिए, हमारा सुझाव है कि आप adapter.js
का इस्तेमाल करें. यह एक शिम है, जिसे WebRTC प्रोजेक्ट मैनेज करता है. इससे ऐप्लिकेशन को खास विशेषताओं और प्रीफ़िक्स के अंतर से बचाने में मदद मिलती है.
XMLHttpRequestProग्रेसEvent अब काम नहीं करता
खास जानकारी: XMLHttpRequestProgressEvent
इंटरफ़ेस को हटा दिया जाएगा. साथ ही, position
और totalSize
एट्रिब्यूट भी हटा दिए जाएंगे.
हटाने का इरादा | Chromestatus ट्रैकर | Chromium गड़बड़ी
यह इवेंट, Gecko के साथ काम करने से जुड़ी प्रॉपर्टी position
और
totalSize
के साथ काम करने के लिए मौजूद था. Mozilla 22 में इन तीनों का समर्थन रोक दिया गया था और अब ProgressEvent
ने काम करने के तरीके की जगह ले ली है.
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
प्रीफ़िक्स वाले एन्क्रिप्ट (सुरक्षित) किए गए मीडिया एक्सटेंशन हटाना
खास जानकारी: प्रीफ़िक्स वाले एन्क्रिप्ट किए गए मीडिया एक्सटेंशन हटा दिए गए हैं. अब इनकी जगह, स्पेसिफ़िकेशन के हिसाब से, प्रीफ़िक्स के बिना काम करने वाले एक्सटेंशन इस्तेमाल किए जाएंगे.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग
हमने Chrome 42 में, एन्क्रिप्ट किए गए मीडिया एक्सटेंशन का स्पेसिफ़िकेशन पर आधारित, बिना प्रीफ़िक्स वाला वर्शन उपलब्ध कराया है. इस एपीआई का इस्तेमाल, HTMLMediaElement
के साथ इस्तेमाल करने के लिए, डिजिटल राइट मैनेजमेंट सिस्टम को ढूंढने, चुनने, और उनसे इंटरैक्ट करने के लिए किया जाता है.
यह करीब एक साल पहले की बात है. साथ ही, बिना प्रीफ़िक्स वाले वर्शन में, प्रीफ़िक्स वाले वर्शन की तुलना में ज़्यादा सुविधाएं हैं. इसलिए, अब एपीआई के प्रीफ़िक्स वाले वर्शन को हटाने का समय आ गया है.
SVGElement.offset प्रॉपर्टी के लिए सहायता सुविधा हटाएं
TL;DR: SVGElement के लिए ऑफ़सेट प्रॉपर्टी को HTMLElement
पर ज़्यादा
ज़्यादा काम करने वाली प्रॉपर्टी के पक्ष में छोड़ दिया गया है.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग
ऑफ़सेट प्रॉपर्टी का इस्तेमाल, HTMLElement
और
SVGElement
, दोनों पर लंबे समय से किया जा रहा है. हालांकि, Gecko और Edge पर सिर्फ़ HTMLElement
पर इनका इस्तेमाल किया जा सकता है. अलग-अलग ब्राउज़र के बीच तालमेल बनाए रखने के लिए, Chrome 48 में इन प्रॉपर्टी के इस्तेमाल पर रोक लगा दी गई थी और अब इन्हें हटाया जा रहा है.
हालांकि, मिलती-जुलती प्रॉपर्टी HTMLElement
का हिस्सा हैं, लेकिन कोई दूसरा विकल्प खोजने वाले डेवलपर भी
getBoundingClientRect()
का इस्तेमाल कर सकते हैं