في كل إصدار تقريبًا من Chrome، نشهد عددًا كبيرًا من التحديثات والتحسينات للمنتج وأدائه وإمكانات "منصة الويب" أيضًا. توضّح هذه المقالة عمليات الإيقاف النهائي وعمليات الإزالة في Chrome 60، الذي يتوفَّر في إصدار تجريبي اعتبارًا من 8 حزيران (يونيو). تخضع هذه القائمة للتغيير في أي وقت.
الأمان
يتطلب crypto.subtle الآن مصدرًا آمنًا
إنّ Web Crypto API
التي كانت متاحة منذ أن بدأ Chrome 37 في العمل دائمًا على مصادر غير آمنة. بسبب سياسة Chrome الراسخة التي تقضي
بتفضيل المصادر الآمنة للميزات الفعّالة،
لا يتم عرض crypto.subtle
فقط على المصادر الآمنة.
هناك نية للإزالة | خطأ Chromium
إزالة عمليات التنقل في الإطار العلوي الذي تم بدؤه في المحتوى الرئيسي إلى عناوين URL للبيانات
بسبب عدم درايتها بالمستخدمين غير التقنيين، نلاحظ بشكل متزايد استخدام مخطط data:
في هجمات الانتحال والتصيّد الاحتيالي. ولمنع حدوث ذلك، نحظر صفحات الويب من تحميل عناوين URL باللغة data:
في الإطار العلوي. ينطبق ذلك على علامات <a>
وwindow.open
وwindow.location
والآليات المشابهة. سيظل مخطط data:
متاحًا للموارد
التي تم تحميلها من خلال الصفحة.
تم إيقاف هذه الميزة نهائيًا في الإصدار 58 من Chrome وتمت إزالتها الآن.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
إيقاف navigator.sendBeacon() مؤقتًا لبعض الكائنات الثنائية الكبيرة
كانت الدالة navigator.sendBeacon()
متاحة
منذ إصدار Chrome 39.
كما تم تنفيذها في الأصل، قد تحتوي الوسيطة data
للدالة على أي
كائن ثنائي كبير عشوائي نوعه ليس مدرجًا ضمن القائمة الآمنة CORS. ونعتقد أن هذا تهديد أمني محتمل،
على الرغم من أن أحد لم يحاول استغلاله حتى الآن. وبما أنّه لا يتوفّر لدينا إصلاح فوري معقول لهذه المشكلة، لم يعُد من الممكن استدعاء sendBeacon()
في الكائنات الثنائية التي يكون نوعها غير مدرج في قائمة CORS الآمنة.
على الرغم من تنفيذ هذا التغيير على الإصدار 60 من Chrome، تم دمجه مرة أخرى مع الإصدار 59 من Chrome.
CSS
جعل أداة الدمج الثانوي التي تخترق الظل تتصرف كأداة دمج تابعة
كان الهدف من أداة الدمج الثانوي (>>>
) التي تخترق الظل (وهي جزء من المستوى 1 من وحدة CSS Scoping) مطابقة العناصر الثانوية لعنصر سابق معيّن حتى عند ظهورها داخل شجرة ظل. وكان لهذا بعض القيود.
أولاً، وفقًا للمواصفات، لا يمكن استخدامه إلا في طلبات JavaScript مثل querySelector()
كما أنه لم يعمل في أوراق الأنماط. والأهم من ذلك، لم يتمكن مورِّدو المتصفح من جعله
يعمل خارج مستوى واحد من Shadow DOM.
وبالتالي، تمت إزالة أداة الدمج الفرعية من المواصفات ذات الصلة، بما في ذلك الإصدار 1 من Shadow DOM. بدلاً من تقسيم صفحات الويب عن طريق إزالة أداة الاختيار هذه من Chromium، اخترنا بدلاً من ذلك استخدام المجمِّع التابع ذي الثقب الظلي بدلاً من المجمِّع التابع. السلوك الأصلي تم إيقافه في Chrome 45. يتم تنفيذ السلوك الجديد في الإصدار 61 من Chrome.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
JavaScript
إيقاف وإزالة RTCPeerConnection.getStreamById()
قبل عامَين تقريبًا، تمت إزالة getStreamById()
من مواصفات WebRTC، علمًا بأنّ معظم المتصفحات الأخرى قد أزالت هذا الإجراء من عمليات التنفيذ. يُعتقد أيضًا أنّ استخدام هذه الوظيفة قليل، لكن يُعتقد أيضًا أنّ هناك بعض المخاطر الصغيرة لإمكانية التشغيل التفاعلي مع المتصفحات المستندة إلى Edge وWebKit بخلاف Safari حيث لا يزال getStreamById()
متاحًا. ويمكن للمطوّرين الذين يحتاجون إلى تنفيذ بديل العثور
على رمز مثالي في Intent to Remove (هدف الإزالة) أدناه.
وتتوفّر عملية الإزالة في إصدار 62 من Chrome.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
إيقاف SVGPathElement.getPathSegAtLength
قبل أكثر من عامين، تمت إزالة getPathSegAtLength()
من مواصفات الرسومات الموجّهة التي يمكن تغيير حجمها (SVG).
ونظرًا لوجود عدد قليل من النتائج لهذه الطريقة في httparchive، سيتم إيقافها في Chrome 60. ومن المتوقّع أن تتم عملية الإزالة في إصدار 62 من Chrome، ومن المتوقّع أن يتم شحنها في أوائل شهر تشرين الأول (أكتوبر) أو منتصفه.
هدف الإيقاف | Chromestatus Tracker | خطأ Chromium
نقل getContextAttributes() خلف علامة
تم توفير الدالة getContextAttributes()
على CanvasRenderingContext2D
منذ عام 2013. ومع ذلك، لم تكن الميزة جزءًا من أي معيار ولم تصبح
جزءًا من أحد المعايير منذ ذلك الوقت. كان من المفترَض أن يتم تنفيذ الإجراء خلف
علامة سطر الأوامر --enable-experimental-canvas-features
، لكن
لم يتم تنفيذه عن طريق الخطأ. في Chrome 60، تم تصحيح هذا الخطأ. يُعتقد أن هذا التغيير آمن، نظرًا لعدم وجود بيانات توضح أن أي شخص يستخدم الطريقة.
إزالة Headers.prototype.getAll()
جارٍ إزالة دالة Headers.prototype.getAll()
وفقًا لأحدث
إصدار من مواصفات الجلب.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
إزالة indexDB.webkitGetDatabaseNames()
لقد أضفنا هذه الميزة عندما كانت قاعدة البيانات المفهرسة جديدة نسبيًا في Chrome وكانت البادئة بشكل كبير. تعرض واجهة برمجة التطبيقات بشكل غير متزامن قائمة بأسماء قاعدة البيانات الحالية في الأصل، وهو ما يبدو معقولاً بما فيه الكفاية.
للأسف، التصميم معيب، حيث قد تكون النتائج قديمة فور إعادتها، ولذلك يمكن استخدامها فقط لتسجيل الدخول، وليس منطق التطبيق الخطير. وتتتبّع مشكلة github أو روابط تؤدي إلى المناقشات السابقة حول البدائل، والتي قد تتطلّب نهجًا مختلفًا. على الرغم من اهتمام المطوّرين به من وقت إلى آخر، إلا أنّ مؤلفي المكتبة عالجوا هذه المشكلة بسبب عدم إحراز التقدّم على مستوى المتصفِّحات.
على المطوّرين الذين يحتاجون إلى هذه الوظيفة تطوير الحلول الخاصة بهم. تستخدم المكتبات مثل Dexie.js على سبيل المثال جدولاً عموميًا وهو في حد ذاته قاعدة بيانات أخرى لتتبع أسماء قواعد البيانات.
تم إيقاف هذه الميزة نهائيًا في الإصدار 58 من Chrome وتمت إزالتها الآن.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
إزالة WEBKIT_KEYframeS_ ويُسمّى WEBKIT_KEYframe_ ويُ
تتم إزالة الثوابت WEBKIT_KEYFRAMES_RULE
وWEBKIT_KEYFRAME_RULE
غير العادية
من
قاعدة CSS.
على المطوّرين استخدام KEYFRAMES_RULE
وKEYFRAME_RULE
بدلاً من ذلك.
هدف الإزالة | Chromestatus Tracker | خطأ Chromium
واجهة المستخدم
إيماءة المستخدم مطلوبة لمربّعات حوار beforeunload
بدءًا من الإصدار 60 من Chrome والإصدارات الأحدث، لن يظهر مربّع الحوار beforeunload
إلا إذا كان الإطار الذي يحاول عرضه قد تلقّى إيماءة مستخدم أو تفاعلاً من المستخدم (أو إذا تلقّى أي إطار مضمّن هذه الإيماءة). للتوضيح، هذا ليس
تغييرًا على إرسال حدث beforeunload
. إنه مجرد تغيير بشأن
ما إذا كان مربع الحوار سيظهر.
مربع الحوار beforeunload
هو مربع حوار على شكل تطبيق. وعلى هذا النحو، فإنّها تكون في حد ذاتها عدائية للمستخدمين، ما يعني أنّها تستجيب لتنقّل المستخدم من خلال التشكيك في قراره. هناك استخدامات إيجابية لهذه الميزة. على سبيل المثال، غالبًا ما يتم استخدامها لتحذير
المستخدمين عندما سيفقدون البيانات عن طريق التنقل.
مع أنّ إمكانية عرض نص في مربّع الحوار beforeunload
أُزيلت منذ فترة، لا تزال مربّعات حوار beforeunload
تشكّل موجّهًا لإساءة الاستخدام. وعلى وجه الخصوص، تعد مربعات حوار beforeunload
أحد مكونات المواقع الإلكترونية المخادعة، حيث توفر
تشغيل الصوت تلقائيًا ونص التهديد سياقًا حيث تصبح رسالة "هل أنت متأكد من رغبتك في مغادرة هذه الصفحة" أمرًا مثيرًا للقلق.
نحن نريد ربط الإبرة والسماح فقط بالاستخدام الجيد لمربع حوار beforeunload
. إن الاستخدامات الجيدة لمربع الحوار هي تلك التي يذكر فيها المستخدم أنه قد يكون مفقودًا. إذا لم يتفاعل المستخدم مع الصفحة مطلقًا، لن يتمكن المستخدم من معرفة أي حالة قد يتم فقدانها، وبالتالي لا نخاطر بفقدان بيانات المستخدم من خلال إيقاف مربع الحوار في هذه الحالة.