عمليات إيقاف واجهة برمجة التطبيقات وإزالتها في Chrome 50

نلاحظ في كل إصدار من إصدارات Chrome تقريبًا عددًا كبيرًا من التحديثات والتحسينات التي طرأت على المنتج وأدائه وكذلك إمكانات النظام الأساسي للويب.

في Chrome 50 (تاريخ الإصدار التجريبي المقدَّر: من 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 لسمة 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. على المشرفين التأكّد من تحديث برامج الخادم. إذا لم يتم حلّ المشكلة، يُرجى التواصل مع مورِّد برمجيات الخادم لمعرفة ما إذا كان هناك حلّ متاح.

إزالة boardEvent.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.

نية الإزالة | أداة تتبُّع Chromestatus | خطأ Chromium

كانت سمات "الموضع النسبي" متاحة منذ فترة طويلة في كلّ من HTMLElement و SVGElement، ولكنّ متصفّحَي Gecko وEdge لا يتيحان استخدامها إلا في HTMLElement. لتحسين الاتساق بين المتصفّحات، تم إيقاف هذه السمات نهائيًا في الإصدار Chrome 48، ويتم الآن إزالتها.

على الرغم من أنّ السمات المماثلة هي جزء من HTMLElement، يمكن للمطوّرين الذين يبحثون عن بديل أيضًا استخدام getBoundingClientRect().