يبدأ طرح الإصدار 83 من Chrome على الإصدار الثابت الآن.
وفي ما يلي ما تحتاج إلى معرفته:
- تساعد الأنواع الموثوق بها في منع حدوث ثغرات في النصوص البرمجية للمواقع الإلكترونية المختلفة.
- تخضع عناصر النموذج لعملية تحول مهمة.
- هناك طريقة جديدة لرصد تسرُّب الذاكرة.
- إنّ واجهة برمجة التطبيقات لنظام الملفات الأصلي تبدأ تجربة مصدر جديدة بوظائف إضافية.
- تتوفّر سياسات جديدة من مصادر متعددة.
- لقد أطلقنا برنامج مؤشرات أداء الويب لتوفير إرشادات موحّدة حول إشارات الجودة التي نعتقد أنّها ضرورية لتقديم تجربة رائعة للمستخدم على الويب.
- والمزيد.
اسمي بيت ليب، أعمل وأصور الفيديو من المنزل. لنتعمق في الأمر ونطّلع على الميزات الجديدة لمطوّري البرامج في Chrome 83.
الأنواع الموثوق بها
تعتبر البرمجة النصية على مستوى المواقع الإلكترونية المستندة إلى نموذج العناصر في المستند (DOM) إحدى أكثر الثغرات الأمنية شيوعًا على الويب. قد يكون من السهل تقديم أحدهما إلى صفحتك عن طريق الخطأ. يمكن أن تساعد الأنواع الموثوق بها في منع هذه الأنواع من الثغرات، لأنها تتطلب منك معالجة البيانات قبل تمريرها إلى دالة من المحتمل أن تكون خطيرة.
لنفترض أن innerHTML
على سبيل المثال، عند تشغيل "موثوق" (الأنواع الموثوق بها)، إذا حاولت تمرير سلسلة، لن ينجح مع الخطأ TypeError لأن المتصفح لا يعرف ما إذا كان
يمكنه الوثوق في السلسلة.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
بدلاً من ذلك، أحتاج إما إلى استخدام دالة آمنة، مثل textContent
، أو إدخال نوع موثوق به، أو إنشاء العنصر واستخدام appendChild()
.
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
قبل تفعيل الأنواع الموثوق بها، عليك تحديد أي انتهاكات
وإصلاحها باستخدام عنوان سياسة أمان المحتوى (CSP) report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
وبعد أن تنتهي من إعداد كل العناصر، يمكنك تشغيلها بشكل صحيح. يمكنك الاطّلاع على التفاصيل الكاملة في القسم منع الثغرات الأمنية في النصوص البرمجية للمواقع الإلكترونية المتقاطعة المستندة إلى DOM باستخدام الأنواع الموثوق بها على web.dev.
تعديلات على عناصر التحكّم في النموذج
نحن نستخدم عناصر التحكم في نماذج HTML كل يوم، وهي عنصر أساسي في تعزيز التفاعل على الويب. إنها سهلة الاستخدام وبها إمكانية وصول مدمجة ومألوفة لمستخدمينا. قد يكون تصميم عناصر التحكم في النموذج غير متسق عبر المتصفحات وأنظمة التشغيل. وكثيرًا ما يتعين علينا شحن عدد من قواعد CSS لمجرد الحصول على نظرة متسقة عبر الأجهزة.
لقد أعجبتُ حقًا بالعمل الذي تقوم به Microsoft لتحديث مظهر عناصر التحكم في النموذج. وبالإضافة إلى التصميم المرئي الأجمل، توفّر هذه الأجهزة دعمًا أفضل باللمس، وإمكانية وصول أفضل، بما في ذلك دعم محسّن للوحة المفاتيح.
سبق أن تم توفير عناصر التحكّم الجديدة في النموذج في Microsoft Edge، وهي متوفّرة الآن في Chrome 83. لمزيد من المعلومات، يمكنك الاطّلاع على تعديلات في عناصر التحكم في النماذج والتركيز في مدونة Chromium.
مرحلة التجربة والتقييم
قياس الذاكرة باستخدام "measureMemory()
"
بدءًا من مرحلة التجربة والتقييم في Chrome 83، فإنّ performance.measureMemory()
هي واجهة برمجة تطبيقات جديدة تتيح قياس استخدام الذاكرة في صفحتك ورصد حالات تسرُّب الذاكرة.
من السهل تقديم ميزة تسرُّب الذاكرة:
- نسيان إلغاء تسجيل أداة معالجة الحدث
- التقاط الكائنات من iframe
- لا يتم إغلاق عامل
- تجميع الكائنات في المصفوفات
- وهكذا
يؤدي تسرُّب الذاكرة إلى ظهور صفحات بطيئة وانتفاخات للمستخدمين.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
يمكنك الاطّلاع على القسم
مراقبة الاستخدام الإجمالي للذاكرة لصفحة الويب من خلال measureMemory()
على web.dev للاطّلاع على جميع تفاصيل واجهة برمجة التطبيقات الجديدة.
تعديلات على Native File System API
بدأت Native File System API تجربة مصدر جديدة في Chrome 83 مع إتاحة ساحات المشاركات القابلة للكتابة عليها وإمكانية حفظ مؤشرات الملفات.
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
تساعد ساحات المشاركات القابلة للكتابة على تسهيل الكتابة إلى الملف، ولأنه يكون عبارة عن مجموعة بث، يمكنك بسهولة توجيه الردود من ساحة مشاركات إلى أخرى.
يتيح لك حفظ أسماء الملفات في IndexedDB بتخزين الحالة أو تذكُّر الملفات التي كان المستخدم يعمل عليها. على سبيل المثال، احتفظ بقائمة بالملفات التي تم تعديلها مؤخرًا، وافتح آخر ملف كان المستخدم يعمل عليه، وهكذا.
لاستخدام هذه الميزات، ستحتاج إلى رمز مميّز جديد لمرحلة التجربة والتقييم، لذا يمكنك الاطّلاع على مقالتي المعدَّلة حول واجهة برمجة التطبيقات Native File System API: تبسيط الوصول إلى الملفات المحلية على web.dev مع تضمين كل التفاصيل وطريقة الحصول على الرمز المميّز الجديد لمرحلة التجربة والتقييم.
تجارب مرحلة واحدة أخرى
يُرجى الاطّلاع على قائمة كاملة بالميزات في مرحلة التجربة والتقييم.
سياسات جديدة مشتركة المصدر
تزيد بعض واجهات برمجة تطبيقات الويب من خطر الهجمات على القنوات الجانبية، مثل Spectre.
للحدّ من هذه المخاطر، توفّر المتصفِّحات بيئة معزولة قائمة على الاشتراك تسمى بيئة معزولة من مصادر متعددة. تمنع الحالة المعزولة من مصادر متعددة أيضًا
تعديلات document.domain
. إنّ إمكانية تغيير document.domain
تتيح التواصل بين المستندات المتوفّرة على الموقع الإلكتروني نفسه
تُعد ثغرة في سياسة المصدر نفسه.
اطّلِع على مشاركة "إيجي" بعنوان جعل موقعك الإلكتروني معزولاً عن مصادر متعددة باستخدام COOP وCOEP للحصول على التفاصيل الكاملة.
مؤشرات أداء الويب
هناك العديد من الجوانب لقياس جودة تجربة المستخدم. على الرغم من أنّ بعض جوانب تجربة المستخدم مرتبطة بالموقع الإلكتروني والسياق، هناك مجموعة شائعة من الإشارات باسم "مؤشرات أداء الويب الأساسية" والتي تُعدّ أساسية لجميع تجارب الويب. وتشمل الاحتياجات الأساسية لتجربة المستخدم كلاً من تجربة التحميل والتفاعل والثبات البصري لمحتوى الصفحة، ويستند المحرّكان معًا إلى "مؤشرات أداء الويب الأساسية" لعام 2020.
- يقيس سرعة عرض أكبر جزء من المحتوى على الصفحة سرعة التحميل التي يتم رصدها ويحدّد النقطة في المخطط الزمني لتحميل الصفحة الوقت الذي تم فيه تحميل المحتوى الرئيسي للصفحة على الأرجح.
- تقيس ميزة مهلة الاستجابة لأوّل إدخال سرعة الاستجابة وتحدّد التجربة التي يشعر بها المستخدمون عند محاولة التفاعل مع الصفحة للمرة الأولى.
- تقيس ميزة متغيّرات التصميم التراكمية الثبات البصري وتحدِّد مقدار التغيُّر غير المتوقَّع في تصميم محتوى الصفحة المرئي.
تحقق كل هذه المقاييس نتائج مهمة تركز على المستخدم، وتكون قابلة للقياس ميدانيًا، ولها أدوات ومكافئات لمقاييس التشخيص في المختبر. على سبيل المثال، على الرغم من أنّ مقياس "سرعة عرض أكبر جزء من المحتوى على الصفحة" هو مقياس "سرعة تحميل المحتوى على الصفحة"، فهو يعتمد أيضًا بشكل كبير على "سرعة عرض المحتوى على الصفحة" (FCP) و"سرعة عرض أول بايت" (TTFB)، واللذين يبقىان مهمين للمراقبة والتحسين.
للاطّلاع على مزيد من المعلومات، يمكنك الاطّلاع على التفاصيل الكاملة في مقالة لمحة عن "مؤشرات أداء الويب": المقاييس الأساسية لضمان سلامة الموقع الإلكتروني، وذلك على مدونة Chromium.
والمزيد
- يدعم Chrome الآن واجهة برمجة تطبيقات اكتشاف الرمز الشريطي التي توفر إمكانية اكتشاف الرموز الشريطية وفك ترميزها.
- توفّر الدالة
@supports
في CSS الجديدة إمكانية رصد الميزات لأدوات اختيار لغة CSS. - تتيح تعليقات ARIA التوضيحية الجديدة إمكانية وصول قارئ الشاشة إلى التعليقات والاقتراحات وعمليات تمييز النصوص ذات المعاني الدلالية (مثل
<mark>
). - يتيح استعلام الوسائط
prefers-color-scheme
للمؤلفين دعم المظهر الداكن الخاص بهم ليتمكّنوا من التحكّم بشكل كامل في التجارب التي ينشئونها. - تتوافق لغة JavaScript الآن مع الوحدات في العاملين المشترَكين.
هل تشعر بالفضول حول ما سيأتي في المستقبل؟ يمكنك الاطّلاع على أداة Fugu API Tracker لمعرفة المزيد.
محتوى إضافي للقراءة
يتضمن هذا القسم فقط بعض النقاط المهمة. اطّلِع على الروابط أدناه للاطّلاع على التغييرات الإضافية في الإصدار 83 من Chrome.
- الميزات الجديدة في "أدوات مطوري البرامج في Chrome" (83)
- إيقاف Chrome 83 نهائيًا وعمليات إزالته
- تحديثات ChromeStatus.com لإصدار Chrome 83
- الميزات الجديدة في JavaScript في Chrome 83
- قائمة تغييرات مستودع مصدر Chromium
اشتراك
إذا كنت تريد الاطّلاع على آخر الأخبار حول فيديوهاتنا، يمكنك الاشتراك في قناة Chrome Developers على YouTube، وستتلقّى إشعارًا عبر البريد الإلكتروني عندما ننشر فيديو جديدًا.
اسمي بيت ليبيج، وأحتاج إلى قص شعر، ولكن ما إن يتم طرح الإصدار 84 من Chrome، سأكون هنا لإخبارك بالجديد في Chrome!