تاريخ النشر: 15 يناير 2024
ما لم يُذكر خلاف ذلك، تنطبق التغييرات التالية على أحدث إصدار من قناة Chrome التجريبية لأجهزة Android وChromeOS وLinux وmacOS وWindows. يمكنك التعرّف أكثر على الميزات المُدرَجة هنا من خلال الروابط المُقدَّمة أو من القائمة على ChromeStatus.com. اعتبارًا من 15 يناير 2024، أصبح Chrome 133 إصدارًا تجريبيًا. يمكنك تنزيل أحدث إصدار على Google.com لأجهزة الكمبيوتر أو على "متجر Google Play" على أجهزة Android.
CSS وواجهة المستخدم
يضيف هذا الإصدار سبع ميزات جديدة في CSS وواجهة المستخدم.
الدالة attr() المتقدّمة في CSS
تنفّذ هذه الميزة التحسينات على attr() المحدّدة في CSS المستوى 5، ما يسمح باستخدام
أنواع أخرى غير <string> واستخدامها في جميع خصائص CSS (بالإضافة إلى الدعم الحالي للعنصر الصوري content).
يمكنك الاطّلاع على مزيد من المعلومات في ترقية الدالة attr() في CSS.
الفئة الصورية :open في CSS
تطابق الفئة الصورية :open العنصرَين <dialog> و<details> عندما يكونان في
حالة الفتح، وتطابق العنصرَين <select> و<input> عندما يكونان في أوضاع
تتضمّن منتقيًا ويظهر هذا المنتقي.
طلبات حاوية حالة التمرير في CSS
يمكنك استخدام طلبات الحاوية لتنسيق العناصر التابعة للحاويات استنادًا إلى حالة التمرير.
تكون حاوية الطلب إما حاوية تمرير أو عنصرًا يتأثر بموضع التمرير في حاوية التمرير. يمكن طلب الحالات التالية:
stuck: تكون حاوية ذات موضع ثابت عالقة بأحد جوانب مربّع التمرير.snapped: تكون حاوية محاذية لمواضع التمرير في وضع التثبيت أفقيًا أو عموديًا.scrollable: ما إذا كان يمكن تمرير حاوية التمرير في اتجاه مطلوب.
تتيح السمة الجديدة container-type: scroll-state إمكانية طلب الحاويات.
#sticky {
position: sticky;
container-type: scroll-state;
}
@container scroll-state(stuck: top) {
#sticky-child {
font-size: 75%;
}
}
يمكنك الاطّلاع على مزيد من المعلومات في CSS scroll-state().
الخصائص text-box وtext-box-trim وtext-box-edge في CSS
لتحقيق التوازن الأمثل في المحتوى النصي، تتيح الخصائص text-box-trim و
text-box-edge، بالإضافة إلى الخاصية المختزلة text-box، التحكّم بشكل أفضل في المحاذاة العمودية للنص.
تحدّد الخاصية text-box-trim الجوانب التي يجب اقتطاعها، أعلى أو أسفل، وتحدّد الخاصية text-box-edge كيفية اقتطاع الحافة.
تتيح لك هذه الخصائص التحكّم في التباعد العمودي بدقة باستخدام مقاييس الخط. يمكنك الاطّلاع على مزيد من المعلومات في مقالة text-box-trim في CSS.
القيمة hint للسمة popover
تحدّد Popover API سلوك قيمتَين للسمة popover: auto وmanual. تصف هذه الميزة قيمة ثالثة، وهي popover=hint. تختلف سلوكيات التلميحات قليلاً، وهي غالبًا ما تكون مرتبطة بسلوكيات من نوع "تلميح الأدوات". الفرق الأساسي هو أنّ hint تابعة لـ auto عند فتح مجموعات متداخلة من النوافذ المنبثقة. لذلك، من الممكن فتح نافذة منبثقة غير ذات صلة من نوع hint بينما تظل مجموعة حالية من النوافذ المنبثقة من نوع auto مفتوحة.
المثال الأساسي هو فتح منتقي <select> (popover=auto) وعرض تلميح أدوات يتم تفعيله عند التمرير (popover=hint). لا يؤدي هذا الإجراء إلى إغلاق
الـ <select> منتقي.
تحسينات على موضع أداة تفعيل النافذة المنبثقة والمرساة
تضيف هذه الميزة طريقة إلزامية لضبط علاقات أداة التفعيل بين النوافذ المنبثقة باستخدام popover.showPopover({source}). تتيح علاقات أداة التفعيل إنشاء مراجع ضمنية لعناصر المرساة.
يجب ألا تعيد النافذة المنبثقة المتداخلة داخل أداة التفعيل تفعيلها
في الحالة التالية، يؤدي النقر على الزر إلى تفعيل النافذة المنبثقة بشكل صحيح، ولكن النقر على النافذة المنبثقة نفسها بعد ذلك يجب ألا يؤدي إلى إغلاقها.
<button popovertarget=foo>Activate
<div popover id=foo>Clicking me shouldn't close me</div>
</button>
كان يحدث ذلك سابقًا لأنّ النقر على النافذة المنبثقة ينتقل إلى <button>
ويُفعِّل أداة التفعيل، ما يؤدي إلى إغلاق النافذة المنبثقة. تم الآن تغيير ذلك إلى السلوك المتوقّع.
واجهات برمجة التطبيقات على الويب
Animation.overallProgress
توفّر هذه الميزة للمطوّرين تمثيلاً مناسبًا ومتسقًا لمدى تقدّم الصورة المتحركة خلال تكراراتها وبغض النظر عن طبيعة المخطط الزمني لها. بدون السمة overallProgress، عليك احتساب مدى تقدّم الصورة المتحركة يدويًا، مع أخذ عدد تكرارات الصورة المتحركة في الاعتبار وما إذا كان currentTime للصورة المتحركة يمثّل نسبة مئوية من الوقت الإجمالي (كما في حالة الصور المتحركة المستندة إلى التمرير) أو كمية وقت مطلقة (كما في حالة الصور المتحركة المستندة إلى الوقت).
الطريقة pause() لكائن Atomics
تضيف هذه الميزة الطريقة pause() إلى كائن مساحة الاسم Atomics، للإشارة إلى وحدة المعالجة المركزية (CPU) بأنّ الرمز الحالي ينفّذ قفل دوران.
الإبلاغ عن تجزئة سياسة أمان المحتوى (CSP) للنصوص البرمجية
غالبًا ما تحتاج تطبيقات الويب المعقدة إلى تتبُّع الموارد الفرعية التي يتم تنزيلها لأغراض أمنية.
على وجه الخصوص، تتطلب المعايير وأفضل الممارسات القادمة في المجال (على سبيل المثال، PCI-DSS الإصدار 4) أن تحتفظ تطبيقات الويب بقائمة بجميع النصوص البرمجية التي يتم تنزيلها وتنفيذها.
تستند هذه الميزة إلى سياسة أمان المحتوى (CSP) وReporting API للإبلاغ عن عناوين URL والتجزئات (لطلبات CORS/المنشأ نفسه) لجميع موارد النصوص البرمجية التي يحمّلها المستند.
نقل حالة نموذج المستند (DOM) مع الحفاظ عليها
تضيف هذه الميزة عنصرًا أساسيًا في نموذج المستند (DOM) (Node.prototype.moveBefore) يتيح لك نقل العناصر في شجرة نموذج العناصر في المستند بدون إعادة ضبط حالة العنصر.
عند النقل بدلاً من الإزالة والإدراج، يتم الاحتفاظ بالحالة التالية، على سبيل المثال:
- تظل عناصر
<iframe>محملة. - يظل العنصر النشط هو العنصر الذي تم التركيز عليه.
- تظل النوافذ المنبثقة والنوافذ بملء الشاشة ومربّعات الحوار المشروطة مفتوحة.
- تستمر الانتقالات والصور المتحركة في CSS.
عرض السمة attributionsrc على <area>
تتوافق هذه الميزة مع عرض السمة attributionsrc على <area> مع سلوك المعالجة الحالي
للسمة، حتى عندما لم يتم عرضها.
بالإضافة إلى ذلك، من المنطقي دعم السمة على <area>، لأنّ هذا
العنصر هو سطح تنقّل أساسي، ويوفّر Chrome حاليًا هذا الدعم على
الأسطح الأخرى لـ <a> وwindow.open.
عرض renderTime المشوّهة من مصادر مختلفة في توقيت العناصر وسرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) (بغض النظر عن Timing-Allow-Origin)
تتضمّن إدخالات توقيت العناصر وسرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) السمة renderTime، التي تتوافق مع الإطار الأول الذي تم فيه عرض صورة أو نص.
تتم حاليًا حماية هذه السمة للصور من مصادر مختلفة من خلال طلب عنوان Timing-Allow-Origin على مورد الصورة. ومع ذلك، من السهل التحايل على هذا القيد (على سبيل المثال، من خلال عرض صورة من المنشأ نفسه وصورة من مصدر مختلف في الإطار نفسه).
بما أنّ ذلك كان مصدرًا للارتباك، نخطط بدلاً من ذلك لإزالة هذا القيد، وبدلاً من ذلك، سنشوّه جميع أوقات العرض بمقدار 4 ملي ثانية عندما لا يكون المستند معزولاً من مصادر مختلفة. يبدو أنّ هذا التشويه كافٍ لتجنُّب تسرُّب أي معلومات مفيدة عن وقت فك التشفير للصور من مصادر مختلفة.
إعادة responseStart وعرض firstResponseHeadersStart
عند تفعيل "تلميحات مبكرة (103)"، تتضمّن الردود طابعَين زمنيين:
- عند وصول "التلميحات المبكرة" (103)
- عند وصول العناوين النهائية (مثل 200)
عندما أطلق Chrome 115
firstInterimResponseStart
للسماح بقياس هذين الطابعَين الزمنيين، غيّرنا أيضًا معنى
responseStart (التي تستخدمها
مدة تحميل أول بايت (TTFB)) لتعني
"العناوين النهائية". أدّى ذلك إلى حدوث مشكلة في التوافق مع الويب في المتصفّحات والأدوات التي لم تُجرِ تغييرًا مشابهًا لهذا المقياس الشائع الاستخدام.
يعيد Chrome 133 تغيير responseStart هذا لحلّ مشكلة التوافق هذه، ويعرض بدلاً من ذلك firstResponseHeadersStart للسماح للمواقع الإلكترونية بقياس الوقت اللازم للوصول إلى العناوين النهائية، مع الاحتفاظ بالتعريف الأصلي لمقياس "الوقت اللازم لبدء تلقّي البايت الأول" (TTFB).
واجهة FileSystemObserver
تُعلم واجهة FileSystemObserver المواقع الإلكترونية بالتغييرات التي تطرأ على نظام الملفات. تراقب المواقع الإلكترونية التغييرات التي تطرأ على الملفات والأدلة التي سبق أن منح المستخدم إذن الوصول إليها على جهازه المحلي أو في نظام ملفات المنشأ الخاص (المعروف أيضًا باسم Bucket File System)، ويتم إعلامها بمعلومات التغيير الأساسية، مثل نوع التغيير.
التجميد في وضع "توفير البطارية"
عندما يكون وضع "توفير البطارية" نشطًا، سيجمّد Chrome "مجموعة سياقات تصفّح" مخفية وغير نشطة لأكثر من خمس دقائق إذا تجاوز أي مجموعة فرعية من الإطارات من المصدر نفسه ضمنها حدًا أقصى لاستخدام وحدة المعالجة المركزية (CPU)، ما لم:
- توفّر وظيفة مؤتمرات صوتية أو مرئية (يتم رصدها من خلال تحديد الميكروفون أو الكاميرا أو تسجيل الشاشة/النافذة/علامة التبويب أو `RTCPeerConnection` مع `RTCDataChannel` "مفتوحة" أو `MediaStreamTrack` "مباشرة").
- تتحكّم في جهاز خارجي (يتم رصده باستخدام WebUSB أو Web Bluetooth أو WebHID أو Web Serial).
- تحتوي على Web Lock أو اتصال IndexedDB يمنع تحديث إصدار أو معاملة على اتصال مختلف.
يتضمّن التجميد إيقاف التنفيذ مؤقتًا. تم تعريفه رسميًا في Page Lifecycle API.
سيتم ضبط الحد الأقصى لاستخدام وحدة المعالجة المركزية (CPU) لتجميد% 10 تقريبًا من علامات التبويب في الخلفية عندما يكون وضع "توفير البطارية" نشطًا.
خرائط استيراد متعدّدة
يجب حاليًا تحميل خرائط الاستيراد قبل أي وحدة ES، ولا يمكن أن تكون هناك سوى خريطة استيراد واحدة لكل مستند. يجعل ذلك استخدامها هشًا وبطيئًا محتملاً في السيناريوهات الواقعية: أي وحدة يتم تحميلها قبلها تؤدي إلى تعطُّل التطبيق بأكمله، وفي التطبيقات التي تحتوي على العديد من الوحدات، تصبح موردًا كبيرًا يحظر الوصول، لأنّه يجب أولاً تحميل الخريطة بأكملها لجميع الوحدات المحتمَلة.
تتيح هذه الميزة استخدام خرائط استيراد متعدّدة لكل مستند، من خلال دمجها بطريقة متسقة ومحدّدة.
عناوين الوصول إلى مساحة التخزين
توفّر هذه الميزة طريقة بديلة للمحتوى المضمّن الذي تم التحقّق منه للموافقة على ملفات تعريف الارتباط غير المقسّمة. تشير هذه العناوين إلى ما إذا كانت ملفات تعريف الارتباط غير المقسّمة مضمّنة (أو يمكن تضمينها) في طلب شبكة معيّن، وتسمح للخوادم بتفعيل أذونات "الوصول إلى مساحة التخزين" التي تم منحها سابقًا. إنّ توفير طريقة بديلة لتفعيل إذن "الوصول إلى مساحة التخزين" يسمح باستخدامها من خلال موارد غير iframe، ويمكن أن يقلّل من وقت الاستجابة للمحتوى المضمّن الذي تم التحقّق منه.
إمكانية إنشاء ClipboardItem باستخدام Promise<DOMString>
يقبل الآن ClipboardItem، وهو الإدخال إلى طريقة write() غير المتزامنة في الحافظة، قيم السلسلة بالإضافة إلى الكائنات الثنائية الكبيرة في الدالة الإنشائية.
يمكن أن يكون ClipboardItemData كائنًا ثنائيًا كبيرًا أو سلسلة أو وعدًا يتم تنفيذه إما على كائن ثنائي كبير أو سلسلة.
WebAssembly Memory64
يضيف اقتراح memory64 memory64 دعمًا لذاكرات WebAssembly الخطية التي يزيد حجمها عن 2^32 بت. لا يقدّم هذا الاقتراح أي تعليمات جديدة، بل يوسّع التعليمات الحالية للسماح بفهارس 64 بت للذاكرات والجداول.
Web Authentication API: طريقة getClientCapabilities() في `PublicKeyCredential`
تتيح لك طريقة getClientCapabilities() في `PublicKeyCredential` تحديد ميزات WebAuthn التي يتيحها جهاز المستخدم. تعرض الطريقة قائمة بالإمكانات المتاحة، ما يسمح للمطوّرين بتخصيص تجارب المصادقة وسير العمل استنادًا إلى وظائف الجهاز المحدّدة.
WebGPU: تنسيقات الرأس المكوّنة من عنصر واحد (وunorm8x4-bgra)
تضيف هذه الميزة تنسيقات رأس إضافية لم تكن متوفّرة في الإصدار الأولي من WebGPU بسبب عدم التوافق أو إصدارات macOS القديمة (التي لم يعُد أي متصفّح متوافقًا معها). تتيح تنسيقات الرأس المكوّنة من عنصر واحد للتطبيقات طلب البيانات الضرورية فقط، بينما كان عليها سابقًا طلب بيانات من أنواع 8 و16 بت أكثر بمرتَين على الأقل. يجعل تنسيق unorm8x4-bgra تحميل ألوان الرأس المشفرة بتنسيق BGRA أكثر ملاءمة قليلاً مع الاحتفاظ بالتظليل نفسه.
خوارزمية X25519 في Web Cryptography API
توفّر خوارزمية "X25519" أدوات لإجراء اتفاق على المفتاح باستخدام دالة X25519 المحدّدة في [RFC7748]. يمكن استخدام معرّف خوارزمية "X25519" في واجهة SubtleCrypto للوصول إلى العمليات التي تم تنفيذها: generateKey وimportKey وexportKey وderiveKey وderiveBits.
عمليات تجربة وتقييم جديدة
في Chrome 133، يمكنك الاشتراك في عمليات التجربة والتقييم الجديدة التالية origin trials.
إيقاف التجميد في وضع "توفير البطارية"
تتيح فترة التجربة والتقييم هذه للمواقع الإلكترونية إيقاف سلوك التجميد في وضع "توفير البطارية" الذي يتم طرحه في Chrome 133.
الإيقاف النهائي والإزالة
يقدّم هذا الإصدار من Chrome عمليات الإيقاف النهائي والإزالة المُدرَجة أدناه. يمكنك الانتقال إلى ChromeStatus.com للاطّلاع على قوائم عمليات الإيقاف النهائي المخطط لها وعمليات الإيقاف النهائي الحالية وعمليات الإزالة السابقة.
يوقف هذا الإصدار من Chrome ميزة واحدة نهائيًا.
إيقاف الحد الأقصى maxInterStageShaderComponents في WebGPU نهائيًا
تم إيقاف maxInterStageShaderComponents limit نهائيًا بسبب مجموعة من
العوامل. تاريخ الإزالة المقصود في Chrome 135.
- التكرار مع
maxInterStageShaderVariables: يخدم هذا الحد الأقصى بالفعل غرضًا مشابهًا، حيث يتحكّم في مقدار البيانات التي يتم تمريرها بين مراحل التظليل. - الاختلافات البسيطة: على الرغم من وجود اختلافات طفيفة في كيفية احتساب الحدّين الأقصيين، فإنّ هذه الاختلافات طفيفة ويمكن إدارتها بفعالية ضمن الحد الأقصى
maxInterStageShaderVariables. - التبسيط: تؤدي إزالة
maxInterStageShaderComponentsإلى تبسيط واجهة التظليل وتقليل التعقيد للمطوّرين. بدلاً من إدارة حدّين أقصيين منفصلَين مع اختلافات طفيفة، يمكنهم التركيز علىmaxInterStageShaderVariablesالذي يحمل اسمًا أكثر ملاءمة وشاملاً.
يزيل هذا الإصدار من Chrome ميزتَين.
إزالة قاعدة الخمس دقائق في <link rel=prefetch>
سابقًا، عندما كان يتم جلب مورد مسبقًا باستخدام <link rel=prefetch>، كان Chrome
يتجاهل دلالات ذاكرة التخزين المؤقت (على وجه التحديد max-age وno-cache) للاستخدام الأول
في غضون خمس دقائق، وذلك لتجنُّب إعادة الجلب. يزيل Chrome الآن هذه الحالة الخاصة ويستخدم دلالات ذاكرة التخزين المؤقت العادية لبروتوكول HTTP.
يعني ذلك أنّه على مطوّري الويب تضمين عناوين التخزين المؤقت المناسبة
(Cache-Control أو Expires) للاستفادة من <link rel=prefetch>.
يؤثر ذلك أيضًا في <link rel=prerender> غير المتوافق مع المعايير.
إزالة تفعيل صفحة الترحيب في Chrome باستخدام علامات التبويب التي يتم فتحها عند التشغيل لأول مرة في الإعدادات المفضّلة الأولية
لن يؤدي الآن تضمين chrome://welcome في السمة first_run_tabs لملف initial_preferences إلى أي تأثير. تمت إزالة ذلك لأنّ هذه الصفحة مكرّرة مع تجربة التشغيل لأول مرة التي يتم تفعيلها على منصات الكمبيوتر.