في كل إصدار من إصدارات Chrome تقريبًا، نلاحظ عددًا كبيرًا من التحديثات تحسينات على المنتج وأدائه وأيضًا على إمكانات الويب النظام الأساسي. توضح هذه المقالة عمليات الإيقاف النهائي وعمليات الإزالة في Chrome 60، وهي لا تزال في مرحلة تجريبية ابتداءً من 8 حزيران (يونيو). تخضع هذه القائمة للتغيير في أي وقت.
الأمان
نحتاج إلى مصدر آمن الآن لـ script.subtle
واجهة برمجة تطبيقات Web Crypto
التي تم دعمها منذ أن عمل Chrome 37 على المحتوى غير الآمن
والأصول. نظرًا لسياسة Chrome طويلة الأمد
تفضيل المصادر الآمنة للميزات الفعّالة،
لا يظهر crypto.subtle
إلا في المصادر الآمنة فقط.
إزالة عمليات انتقال الإطار العلوي التي يتم تشغيلها من خلال المحتوى إلى عناوين 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.
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. يُعتقد أن هذا
التغيير آمن، حيث لا توجد بيانات توضح أن أي شخص يستخدم هذه الطريقة.
إزالة 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
" بشكل جيّد ونسمح باستخدامها فقط
. وتتمثل الاستخدامات الجيدة لمربع الحوار في تلك التي يذكر فيها المستخدم حالة قد تكون
وتفقدها. إذا لم يتفاعل المستخدم مع الصفحة أبدًا، فلا يمكن للمستخدم أن
التي قد تُفقد، وبالتالي لا نخاطر بفقدان بيانات المستخدم عن طريق
أو إيقاف مربع الحوار في هذه الحالة.