عمليات الإيقاف والإزالة في Chrome 60

Joe Medley
Joe Medley

في كل إصدار من إصدارات Chrome تقريبًا، نلاحظ عددًا كبيرًا من التحديثات تحسينات على المنتج وأدائه وأيضًا على إمكانات الويب النظام الأساسي. توضح هذه المقالة عمليات الإيقاف النهائي وعمليات الإزالة في Chrome 60، وهي لا تزال في مرحلة تجريبية ابتداءً من 8 حزيران (يونيو). تخضع هذه القائمة للتغيير في أي وقت.

الأمان

نحتاج إلى مصدر آمن الآن لـ script.subtle

واجهة برمجة تطبيقات Web Crypto التي تم دعمها منذ أن عمل Chrome 37 على المحتوى غير الآمن والأصول. نظرًا لسياسة Chrome طويلة الأمد تفضيل المصادر الآمنة للميزات الفعّالة، لا يظهر crypto.subtle إلا في المصادر الآمنة فقط.

نية الإزالة | خطأ Chromium

إزالة عمليات انتقال الإطار العلوي التي يتم تشغيلها من خلال المحتوى إلى عناوين URL للبيانات

ونظرًا لعدم درايتهم بمستخدمي المتصفحات غير التقنيين، يمكننا تزايد استخدام مخطط data: في الانتحال والتصيّد الاحتيالي الهجمات. لمنع حدوث ذلك، نحظر صفحات الويب من تحميل data: عنوان URL. في الإطار العلوي. ينطبق ذلك على علامات <a>، window.open، window.location والآليات المشابهة. سيبقى مخطط "data:" متاحًا الموارد التي تم تحميلها عبر إحدى الصفحات.

تم إيقاف هذه الميزة نهائيًا في الإصدار 58 من Chrome وتمت إزالتها حاليًا.

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

إيقاف navigator.sendBeacon() مؤقتًا لبعض الملفات الثنائية الكبيرة

الدالة navigator.sendBeacon() متاحة اعتبارًا من الإصدار Chrome 39. كما تم التنفيذ في الأصل، يمكن أن تحتوي وسيطة data للدالة على أي كائن ثنائي كبير (blob) يكون غير مدرج في القائمة الآمنة لسياسة CORS. ونعتقد أنّ هذا تأثير تهديدًا أمنيًا، على الرغم من أنه لم يحاول أحد استغلاله حتى الآن. لأننا لا لديها حل فوري معقول لهذه المشكلة، مؤقتًا، إذ يتعذر على sendBeacon() أكثر قابلية للاستعانة بها على وحدات blob التي لا يكون نوعها ضمن قائمة CORS الآمنة.

على الرغم من تنفيذ هذا التغيير في Chrome 60، فقد تم دمجه منذ ذلك الحين إلى الإصدار 59 من Chrome.

خطأ Chromium

CSS

جعل أداة الدمج التابع لثقب الظل تعمل كالمركّب الناقص

المُنشئ التابع لثقب الظل (>>>)، جزء من المستوى 1 من وحدة نطاق CSS ، لكي يطابق العناصر الثانوية لعنصر أصل معيّن حتى عندما ظهرت داخل شجرة ظل. كانت هناك بعض القيود. أولاً، وفقًا للمواصفات، يمكن استخدامه فقط في استدعاءات JavaScript مثل querySelector() ولم يكن العمل في أوراق الأنماط. والأهم من ذلك، لم يتمكن موردو المتصفح من تعمل خارج مستوى واحد من Shadow DOM.

وبالتالي، تمت إزالة أداة الدمج التابعة من المواصفات ذات الصلة. بما في ذلك الإصدار 1 من Shadow DOM. بدلاً من تقسيم صفحات الويب عن طريق إزالة أداة الاختيار هذه في Chromium، اخترنا بدلاً من ذلك تسمية الجزء اللاحق الذي يخرق الظل المكون إلى المكّنف التابع. كان السلوك الأصلي متوقّفة نهائيًا في الإصدار Chrome 45. تم تنفيذ السلوك الجديد في الإصدار 61 من Chrome.

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

JavaScript

إيقاف RTCPeerConnection.getStreamById() نهائيًا

قبل عامين تقريبًا، تمت إزالة getStreamById() من مواصفات WebRTC. وتتضمن معظم المتصفحات الأخرى من عمليات التنفيذ لديهم بالفعل. رغم أن هذه الدالة قد لا يتم استخدامه بكثرة، ولكن يُعتقد أيضًا أن هناك بعض مخاطر إمكانية التشغيل التفاعلي مع المتصفحات المستندة إلى Edge وWebKit بخلاف Safari حيث لا يزال getStreamById() متاحًا. المطوّرون الذين يحتاجون إلى بديل تنفيذ يمكن العثور على رمز نموذجي في Intent toRemove أدناه.

الإزالة في الإصدار Chrome 62.

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

إيقاف SVGPathElement.getPathSegAtLength

قبل أكثر من عامَين، تمت إزالة getPathSegAtLength() من مواصفات SVG. ونظرًا لوجود عدد قليل من النتائج لهذه الطريقة في الأرشفة http، في Chrome 60 نهائيًا. ومن المتوقع أن تتم الإزالة في الإصدار Chrome 62، الذي وستشحن بعض الوقت في أوائل أو منتصف أكتوبر.

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

نقل getContextAttributes() خلف علامة

تم دعم الدالة getContextAttributes() على CanvasRenderingContext2D منذ عام 2013 ومع ذلك، لم تكن هذه الميزة جزءًا من أي معيار ولم يتم جزءًا من واحد منذ ذلك الوقت. كان يجب أن يتم تنفيذه خلف علامة سطر أوامر --enable-experimental-canvas-features، ولكن تم ضبطها عن طريق الخطأ لا. تم تصحيح هذا الخطأ في Chrome 60. يُعتقد أن هذا التغيير آمن، حيث لا توجد بيانات توضح أن أي شخص يستخدم هذه الطريقة.

خطأ Chromium

إزالة Headers.prototype.getAll()

تجري إزالة الدالة Headers.prototype.getAll() وفقًا للأحدث لمواصفات الجلب.

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

إزالة IndexDB.webkitGetDatabaseNames()

أضفنا هذه الميزة عندما كانت قاعدة البيانات المفهرسة جديدة نسبيًا في Chrome وكانت بادئة كان في غضب شديد. تعرض واجهة برمجة التطبيقات قائمة بقاعدة البيانات الحالية بشكل غير متزامن الأسماء في الأصل، والتي بدت معقولة بما فيه الكفاية.

لسوء الحظ، التصميم معيب، حيث قد تصبح النتائج قديمة في أقرب وقت عند إعادتها، لذلك يمكن استخدامها حقًا للقطع فقط، وليس ومنطق التطبيق. تشير رسالة الأشكال البيانية مسارات أو روابط تؤدي إلى مشكلة في github المناقشة السابقة حول البدائل، والتي قد تتطلب نهجًا مختلفًا. وعلى الرغم من اهتمام مطوّري البرامج بشكل متقطع، نظرًا لعدم وجود تقدم المتصفح، تم حل المشكلة بواسطة مؤلفي المكتبة.

يحتاج المطوّرون الذين يحتاجون إلى هذه الوظيفة إلى تطوير حلّ خاص بهم. على سبيل المثال، تستخدم المكتبات مثل Dexie.js جدولاً عموميًا. وهو في حد ذاته قاعدة بيانات أخرى لتتبع أسماء قواعد البيانات.

تم إيقاف هذه الميزة نهائيًا في الإصدار 58 من Chrome وتمت إزالتها حاليًا.

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

إزالة WEBKIT_KEYframeS_ ثلاثة

الثابتان WEBKIT_KEYFRAMES_RULE وWEBKIT_KEYFRAME_RULE غير العاديَين تمت إزالتها من قاعدة CSS: على المطوّرين استخدام KEYFRAMES_RULE وKEYFRAME_RULE بدلاً من ذلك.

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

واجهة المستخدم

طلب إيماءة المستخدم لمربعات حوار قبل إلغاء التحميل

واعتبارًا من الإصدار 60 من Chrome فصاعدًا، سيظهر مربع الحوار beforeunload فقط إذا كان الإطار كانت محاولة عرض المنتج تتضمن إيماءة مستخدم أو تفاعل من المستخدم (أو إذا أي إطار مضمن تلقى مثل هذه الإيماءة). للتوضيح، هذا ليس التغيير إلى إرسال الحدث beforeunload. إنه مجرد تغيير في ما إذا كان سيتم عرض مربع الحوار أم لا.

مربّع حوار beforeunload هو مربّع حوار نمطي للتطبيق. وعلى هذا النحو، فهي بطبيعتها ومضيفي للمستخدم، أي أنه يستجيب لتنقل المستخدم من خلال التشكيك في احتياجات القرار. هناك استخدامات إيجابية لهذه الميزة. على سبيل المثال، غالبًا ما يتم استخدام لتحذير المستخدمين عند فقدان البيانات عن طريق التنقل.

على الرغم من أن قدرة إحدى الصفحات على توفير نص لمربع الحوار beforeunload كانت غير متاحة تمت إزالتها منذ فترة، وبقيت مربّعات حوار beforeunload موجّهًا إلى إساءة الاستخدام. ضِمن خصوصًا أنّ مربّعات حوار beforeunload هي أحد مكونات المواقع الإلكترونية المخادعة، حيث يؤدي التشغيل التلقائي للصوت ونص التهديد إلى توفير سياق يمكن فيه لـ Chromium تقديم "هل تريد فعلاً مغادرة هذه الصفحة" مصدر قلق.

يجب استخدام إبرة "beforeunload" بشكل جيّد ونسمح باستخدامها فقط . وتتمثل الاستخدامات الجيدة لمربع الحوار في تلك التي يذكر فيها المستخدم حالة قد تكون وتفقدها. إذا لم يتفاعل المستخدم مع الصفحة أبدًا، فلا يمكن للمستخدم أن التي قد تُفقد، وبالتالي لا نخاطر بفقدان بيانات المستخدم عن طريق أو إيقاف مربع الحوار في هذه الحالة.