في كل إصدار من Chrome تقريبًا، نضيف عددًا كبيرًا من التعديلات والتحسينات على المنتج وأدائه وإمكانيات منصّة الويب.
في الإصدار 50 من Chrome (تاريخ الإصدار التجريبي المقدَّر: من 10 إلى 17 آذار (مارس))، تم إجراء عدد من التغييرات على Chrome. تخضع هذه القائمة للتغيير في أي وقت.
إيقاف ذاكرة التخزين المؤقت للتطبيقات نهائيًا في السياقات غير الآمنة
الملخّص: لمنع النصوص البرمجية للمواقع الإلكترونية المشتركة، سنوقف AppCache نهائيًا في المواقع الإلكترونية التي تأتي من مصدر غير آمن. نتوقع أن تعمل هذه الميزة في الإصدار 52 من Chrome فقط على مصادر مشاركة المحتوى عبر HTTPS.
Intent to Remove | Chromestatus Tracker | Chromium Bug
AppCache هي ميزة تسمح بالوصول بلا إنترنت وبصفة دائمة إلى مصدر، وهو تصعيد امتيازات فعّال لهجوم البرمجة النصية على المواقع الإلكترونية. كجزء من جهد أكبر لإزالة الميزات القوية من المصادر غير الآمنة
يزيل Chrome مسار الهجوم هذا من خلال السماح به فقط عبر HTTPS. سنتوقف نهائيًا عن استخدام بروتوكول HTTP في الإصدار 50 من Chrome، ونتوقع إزالته بالكامل في الإصدار 52.
تمت إزالة Document.defaultCharset
الملخّص: تمت إزالة document.defaultCharset
لتحسين الامتثال للمواصفات.
Intent to Remove | Chromestatus Tracker | CRBug Issue
العنصر document.defaultCharset
، الذي تم إيقافه نهائيًا في الإصدار 49 من Chrome، هو سمة للقراءة فقط
تُعرِض ترميز الأحرف التلقائي لنظام المستخدم استنادًا إلى
إعداداته الإقليمية. تبيّن أنّه ليس من المفيد الاحتفاظ بهذه القيمة
بسبب الطريقة التي تستخدِم بها المتصفّحات معلومات ترميز الأحرف في
استجابة HTTP أو في العلامة الوصفية المضمّنة في الصفحة.
بدلاً من ذلك، استخدِم document.characterSet
للحصول على القيمة الأولى المحدّدة في عنوان HTTP. إذا لم تكن هذه السمة متوفّرة، ستحصل على القيمة المحدّدة في سمة
charset
للعنصر <meta>
(على سبيل المثال، <meta
charset="utf-8">
). أخيرًا، إذا لم يكن أيّ من هذه العناصر متوفّرًا، ستكون قيمة
document.characterSet
هي إعدادات النظام الخاصة بالمستخدم.
يمكنك الاطّلاع على مزيد من المناقشات حول سبب عدم تحديد هذه القيمة في هذه المشكلة على GitHub.
تمت إزالة سمة Subresource من عنصر الرابط
الملخّص: إزالة إمكانية استخدام القيمة subresource
لسمة rel
في
HTMLLinkElement
Intent to Remove | Chromestatus Tracker | Chromium Bug
كان الغرض من سمة subresource
في <link> هو التحميل المُسبَق لأحد
الموارد أثناء وقت عدم النشاط للمتصفّح. بعد أن ينزِّل المتصفّح صفحة،
يمكنه بعد ذلك تنزيل الموارد مسبقًا، مثل الصفحات الأخرى، لكي يتم استرجاعها بسهولة من ذاكرة التخزين المؤقت للمتصفّح عندما يطلبها
المستخدمون.
واجهت سمة subresource
عددًا من المشاكل. أولاً، لم يعمل الإجراء على النحو المقصود. تم تنزيل الموارد المُشار إليها بأولوية منخفضة. لم يتم تنفيذ السمة
على أي متصفّح آخر غير Chrome. كان هناك خطأ في عملية تنفيذ Chrome
أدّى إلى تنزيل الموارد مرتين.
إنّ المطوّرين الذين يريدون تحسين تجربة المستخدم من خلال التحميل المُسبَق للمحتوى
يتوفر لهم عدد من الخيارات، وأكثرها قابلية للتخصيص هو إنشاء عامل تدخُّل في الخدمة
للاستفادة من ميزة التخزين المؤقت المُسبَق وCaches API. تشمل الحلول الإضافية
قيمًا أخرى لسمة rel
مثل preconnect
وprefetch
وpreload
وprerender
. بعض هذه
الخيارات تجريبية وقد لا تكون متاحة على نطاق واسع.
إزالة الإصدار الاحتياطي غير الآمن من بروتوكول أمان طبقة النقل (TLS)
الملخّص: أزِل آلية لإجبار الخوادم على عرض البيانات باستخدام إصدارات أقل أمانًا أو غير آمنة من بروتوكول أمان طبقة النقل (TLS).
Intent to Remove | Chromestatus Tracker | Chromium Bug
يتوافق بروتوكول أمان طبقة النقل (TLS) مع آلية التفاوض على الإصدارات، مما يتيح إدخال إصدارات جديدة من بروتوكول TLS بدون تعطيل التوافق. نفَّذ بعض الخوادم ذلك بطريقة تتطلّب من المتصفّحات استخدام نقاط نهاية غير آمنة كخيار احتياطي. ولهذا السبب، يمكن للمهاجمين فرض أي موقع إلكتروني، وليس فقط المواقع الإلكترونية التي تم ضبطها بشكل غير صحيح، على التفاوض بشأن استخدام إصدارات أضعف من بروتوكول أمان طبقة النقل (TLS).
لن تتمكّن المواقع الإلكترونية المتأثرة من الاتصال بـ ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
. على المشرفين
التأكّد من تحديث برامج الخادم. إذا لم يتم حلّ المشكلة، يُرجى التواصل مع مورِّد برمجيات
الخادم لمعرفة ما إذا كان هناك حلّ متاح.
إزالة KeyboardEvent.prototype.keyLocation
النصّ المختصر (TL;DR): أزِل اسمًا بديلاً غير ضروري للسمة Keyboard.prototype.location
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
هذه السمة هي ببساطة اسم بديل لسمة Keyboard.prototype.location
، ما يسمح بإزالة الغموض بين المفاتيح التي تقع في عدة
أماكن على لوحة المفاتيح. على سبيل المثال، تسمح كلتا السمتَين للمطوّرين بالتمييز بين مفتاحَي Enter
على لوحة مفاتيح موسّعة.
معالجات الأخطاء والنجاح مطلوبة في طرق RTCPeerConnection
الملخّص: تتطلّب الآن طريقتَا WebRTC
RTCPeerConnection createOffer()
وcreateAnswer()
معالج أخطاء بالإضافة إلى معالج نجاح. في السابق، كان
يمكن استدعاء هذه الطرق باستخدام معالِج نجاح فقط. تم
إيقاف هذا الاستخدام نهائيًا.
Intent to Remove | Chromestatus Tracker | Chromium Bug
في الإصدار 49 من Chrome، أضفنا تحذيرًا في حال استدعاء
setLocalDescription()
أو setRemoteDescription()
بدون تقديم معالِج أخطاء. أصبحت وسيطة معالج الأخطاء إلزامية اعتبارًا من الإصدار 50 من Chrome.
يُعدّ ذلك جزءًا من إزالة العقبات أمام تقديم ضمانات بشأن هذه الطرق، كما هو مطلوب بموجب مواصفات 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، وذلك لحماية التطبيقات من التغييرات في المواصفات والاختلافات في البادئة.
لم يعُد XMLHttpRequestProgressEvent متاحًا
الملخّص: ستتم إزالة واجهة XMLHttpRequestProgressEvent
، بالإضافة
إلى السمتَين position
وtotalSize
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
كان هذا الحدث متوفّرًا لدعم سمات التوافق مع Gecko position
و
totalSize
. وتم إيقاف هذه الوظائف في الإصدار 22 من Mozilla، وتم استبدالها منذ فترة طويلة بالدالة
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
}
}
إزالة الإضافات المشفّرة التي تحتوي على بادئة
النصّ المختصر (TL;DR): تمت إزالة إضافات الوسائط المشفّرة التي تحتوي على بادئة، واستبدالها ببديل بدون بادئة ومستند إلى المواصفات.
Intent to Remove | Chromestatus Tracker | Chromium Bug
في الإصدار 42 من Chrome، طرحنا إصدارًا استنادًا إلى المواصفات
غير مسبوق ببادئة من إضافات الوسائط المشفّرة. تُستخدَم واجهة برمجة التطبيقات هذه لاكتشاف أنظمة إدارة الحقوق الرقمية
واختيارها والتفاعل معها لاستخدامها مع
HTMLMediaElement
.
كان ذلك قبل عام تقريبًا. وبما أنّ الإصدار غير المزوّد ببادئة يمتلك ميزات أكثر مقارنةً بالإصدار المزوّد ببادئة، فقد حان الوقت لإزالة الإصدار المزوّد ببادئة من واجهة برمجة التطبيقات.
إزالة إمكانية استخدام سمات SVGElement.offset
الملخّص: تمّ إيقاف سمات الترجمة في SVGElement لصالح السمات التي تحظى بدعمٍ أوسع في HTMLElement
.
Intent to Remove | Chromestatus Tracker | Chromium Bug
كانت سمات "الموضع النسبي" متاحة منذ فترة طويلة في كلّ من HTMLElement
و
SVGElement
، ولكنّ متصفّحَي Gecko وEdge لا يتيحان استخدامها إلا في HTMLElement
. لتحسين الاتساق بين المتصفّحات، تم إيقاف هذه السمات نهائيًا في الإصدار Chrome
48، ويتم الآن إزالتها.
على الرغم من أنّ السمات المماثلة هي جزء من HTMLElement
، يمكن للمطوّرين الذين يبحثون عن
بديل أيضًا استخدام
getBoundingClientRect()
.