Published: March 05, 2025
ما لم يُذكر خلاف ذلك، تنطبق التغييرات التالية على أحدث إصدار من قناة Chrome التجريبية لأنظمة التشغيل Android وChromeOS وLinux وmacOS وWindows. يمكنك الاطّلاع على مزيد من المعلومات عن الميزات المُدرَجة هنا من خلال الروابط المُقدَّمة أو من القائمة على ChromeStatus.com. اعتبارًا من 5 مارس 2025، أصبح Chrome 135 إصدارًا تجريبيًا. يمكنك تنزيل الـ أحدث إصدار على Google.com لأجهزة الكمبيوتر أو على "متجر Google Play" على أجهزة Android.
CSS وواجهة المستخدم
يضيف هذا الإصدار 13 ميزة جديدة في CSS وواجهة المستخدم.
تذكُّر إزاحة التمرير في موضع التثبيت
أضِفنا دعمًا لمفهوم إزاحة التمرير المتذكَّرة. عندما يكون لعنصر ذي موضع محدّد نقطة تثبيت تلقائية، ويكون مرتبطًا بنقطة التثبيت هذه من أحد الجانبَين، ويكون مرتبطًا بكتلة المحتوى الأصلية من الجانب الآخر، سيتم أخذ إزاحة التمرير في الاعتبار عند تغيير حجم العنصر. يعني ذلك أنّه يمكنك استخدام كل المساحة المرئية (باستخدام position-area) للعنصر المثبَّت عندما يتم تمرير المستند بإزاحة تمرير معيّنة. لتجنُّب تغيير التنسيق (تغيير حجم العنصر) في كل مرة يتم فيها تمرير المستند، يستخدم المتصفّح إزاحة التمرير المتذكَّرة بدلاً من استخدام إزاحة التمرير الحالية دائمًا. يتم تعديل إزاحة التمرير المتذكَّرة عند نقطة إعادة احتساب نقطة التثبيت، وهي إما الموضع الذي يتم فيه عرض العنصر ذي الموضع المحدّد في البداية، أو عند اختيار خيار موضع مختلف (position-try-fallbacks).
خاصية CSS Inertness
تؤثّر خاصية Inertness في ما إذا كان يمكن التركيز على العنصر وتعديله واختياره والبحث عنه باستخدام ميزة "البحث في الصفحة". تؤثّر هذه الخاصية أيضًا في ما إذا كان العنصر مرئيًا في شجرة إمكانية الوصول. تحدّد السمة interactivity ما إذا كان العنصر والعناصر الفرعية في شجرة العناصر المسطّحة (بما في ذلك النصوص) غير تفاعلية أم لا. تقبل السمة interactivity إحدى القيمتَين: auto أو inert.
خصائص التجاوز المنطقية
تتيح لك خصائص CSS overflow-inline وoverflow-block ضبط التجاوز في الاتجاهَين المضمّن والكتلي بالنسبة إلى وضع الكتابة. في وضع الكتابة الأفقي، يتم ربط overflow-inline بـ overflow-x، بينما في وضع الكتابة العمودي، يتم ربطها بـ overflow-y.
الدالتان المرتبطتان بالإشارة: abs() وsign()
السمة dynamic-range-limit
تتيح هذه السمة للصفحة الحدّ من الحد الأقصى لسطوع محتوى HDR.
الدالة shape()
تتيح الدالة shape() أشكالًا حرة الاستجابة في السمة clip-path. تتيح لك تحديد سلسلة من الأوامر، تعادل الأوامر في path(). ومع ذلك، تقبل الأوامر وحدات استجابة (على سبيل المثال، % أو vw)، بالإضافة إلى أي قيم CSS، مثل الخصائص المخصّصة.
العنصر الزائف ::column
العنصر الزائف ::column، الذي يتيح تطبيق مجموعة محدودة من الأنماط على الأجزاء التي تم إنشاؤها. على وجه التحديد، يقتصر ذلك على الأنماط التي لا تؤثّر في التنسيق، وبالتالي يمكن تطبيقها بعد التنسيق.
العناصر الزائفة ::scroll-button()
تتيح هذه العناصر إنشاء أزرار تمرير تفاعلية كعناصر زائفة. على سبيل المثال:
.scroller {
overflow: auto;
}
.scroller::scroll-button(inline-start) {
content: "<";
}
.scroller::scroll-button(inline-end) {
content: ">";
}
يجب أن تكون هذه العناصر قابلة للتركيز عليها، وأن تتصرف كزر (بما في ذلك أنماط وكيل المستخدم).
عند تفعيلها، يجب إجراء تمرير في الاتجاه بمقدار معيّن.
عندما يتعذّر التمرير في هذا الاتجاه، يجب إيقافها (وتنسيقها باستخدام :disabled)، وإلا يتم تفعيلها (وتنسيقها باستخدام :enabled). يتيح لك محدّد CSS تحديد الأزرار في أربعة اتجاهات منطقية: block-start وblock-end وinline-start وinline-end، بالإضافة إلى أربعة اتجاهات فعلية: up وdown وleft وright.
::scroll-marker و::scroll-marker-group
تضيف هذه العناصر ::scroll-marker و::scroll-marker-group لحاويات التمرير.
تتيح لك هذه العناصر الزائفة إنشاء مجموعة من العلامات القابلة للتركيز عليها لجميع العناصر المرتبطة ضِمن حاوية التمرير.
تنسيق العناصر الزائفة المدمجة
تتيح هذه الميزة تنسيق العناصر الزائفة المدمجة داخل عناصر زائفة أخرى.
حتى الآن، تم تحديد الدعم لـ ::before::marker و::after::marker مع توفير الدعم لـ ::column::scroll-marker في المستقبل.
تقسيم سجلّ الروابط التي تم الانتقال إليها :visited
لإزالة تسرّبات سجلّ تصفّح المستخدم، يتم تنسيق عناصر الرابط على أنّها :visited فقط إذا تم النقر عليها من هذا الموقع الإلكتروني من المستوى الأعلى ومصدر الإطار من قبل. من خلال تنسيق الروابط التي تم النقر عليها في هذا الموقع الإلكتروني والإطار من قبل فقط، أصبحت العديد من الهجمات على القنوات الجانبية التي تم تطويرها للحصول على معلومات تنسيق الروابط التي تم الانتقال إليها :visited قديمة، لأنّها لم تعُد تقدّم للمواقع الإلكترونية معلومات جديدة عن المستخدمين.
هناك استثناء للروابط الذاتية، حيث يمكن تنسيق الروابط المؤدية إلى صفحات الموقع الإلكتروني على أنّها :visited حتى إذا لم يتم النقر عليها في هذا الموقع الإلكتروني من المستوى الأعلى ومصدر الإطار من قبل. لا يتم تفعيل هذا الاستثناء إلا في الإطارات من المستوى الأعلى أو الإطارات الفرعية التي لها المصدر نفسه مع الإطار من المستوى الأعلى. لا تزال مزايا الخصوصية تتحقق لأنّ المواقع الإلكترونية تعرف مسبقًا الصفحات الفرعية التي زارها المستخدم، لذا لا يتم عرض أي معلومات جديدة. كان هذا استثناءً طلبته المجموعة، ما يحسّن تجربة المستخدم.
الترميز الوظيفي لتقدُّم الاستيفاء: الدالة *progress() في CSS
المتغيّرات safe-area-max-inset-*
بالإضافة إلى متغيّرات بيئة safe-area-inset، يتيح Chrome الآن أيضًا استخدام المتغيّرات max-area-safe-inset-*. على عكس الإزاحات الديناميكية، لا تتغيّر الإزاحات القصوى وتمثّل الحد الأقصى لإزاحة المنطقة الآمنة الممكنة.
هذه القيم ضرورية عند إنشاء تجارب ويب عالية الأداء من الحافة إلى الحافة.
واجهات برمجة تطبيقات الويب
إضافة دعم MediaStreamTrack إلى Web Speech API
أضِفنا دعم MediaStreamTrack إلى Web Speech API. Web Speech API هي واجهة برمجة تطبيقات للويب وفقًا لمعيار الويب، وتتيح للمطوّرين دمج ميزتَي التعرّف على الكلام وإنشاء الكلام في صفحات الويب. تستخدم Web Speech API حاليًا الميكروفون التلقائي للمستخدم كإدخال صوتي. يتيح دعم MediaStreamTrack للمواقع الإلكترونية استخدام Web Speech API لإضافة ترجمة وشرح لمصادر أخرى للصوت، بما في ذلك المقاطع الصوتية عن بُعد.
تقسيم عناوين URL الخاصة بالكائنات الثنائية الكبيرة (BLOB): الجلب والتنقّل
في إطار مواصلة ميزة "تقسيم مساحة التخزين"، تنفّذ هذه الميزة تقسيم الوصول إلى عناوين URL الخاصة بالكائنات الثنائية الكبيرة حسب مفتاح مساحة التخزين (الموقع الإلكتروني من المستوى الأعلى ومصدر الإطار والقيمة المنطقية has-cross-site-ancestor)، باستثناء عمليات التنقّل من المستوى الأعلى التي ستظل مقسّمة حسب مصدر الإطار فقط.
توجيه CSP require-sri-for للبرامج النصية
يمنحك التوجيه require-sri-for إمكانية التأكيد على ضرورة التحقّق من سلامة كل مورد من نوع معيّن. إذا تمت محاولة تحميل مورد من هذا النوع بدون بيانات وصفية للسلامة، ستفشل المحاولة وسيتم إنشاء تقرير عن انتهاك سياسة أمان المحتوى (CSP). تغطي هذه النية قيمة "script"
لهذا التوجيه.
إنشاء برنامج مشغّل خدمات واكتساب عناصر التحكّم في برنامج مشغّل الخدمات لإطار iframe لسمة srcdoc
لا تمثّل مستندات سياق srcdoc حاليًا برامج مشغّلة خدمات ولا يغطيها برنامج مشغّل الخدمات الرئيسي. يؤدي ذلك إلى بعض التناقضات (على سبيل المثال، تسجّل "مقاييس أداء الموارد" عناوين URL التي تحمّلها هذه المستندات، ولكن لا يعترضها برنامج مشغّل الخدمات). يهدف هذا إلى إصلاح التناقضات من خلال إنشاء برامج مشغّلة خدمات لإطارات iframe لسمة srcdoc وجعلها تكتسب عناصر التحكّم في برنامج مشغّل الخدمات الرئيسي.
إرسال أحداث النقر إلى المؤشر الذي تم التقاطه
إذا تم التقاط مؤشر أثناء إرسال حدث pointerup، سيتم إرسال حدث click إلى الهدف الذي تم التقاطه بدلاً من أقرب سلف مشترك لأحداث pointerdown وpointerup وفقًا لمواصفات أحداث واجهة المستخدم. بالنسبة إلى المؤشرات التي لم يتم التقاطها، يظل هدف click بدون تغيير.
Float16Array
أضِفنا المصفوفة المكتوبة Float16Array. يتم تقريب القيم الرقمية إلى IEEE fp16 عند الكتابة في مثيلات Float16Array.
دمج منشئ التنقّل في مفتاح قسم ذاكرة التخزين المؤقت لبروتوكول HTTP
تم تعديل نظام وضع المفاتيح في ذاكرة التخزين المؤقت لبروتوكول HTTP في Chrome لتضمين قيمة منطقية is-cross-site-main-frame-navigation للتخفيف من هجمات تسرّب البيانات من مواقع إلكترونية متعددة التي تتضمّن عمليات تنقّل من المستوى الأعلى. على وجه التحديد، سيمنع ذلك الهجمات من مواقع إلكترونية متعددة التي يمكن للمهاجم فيها بدء عملية تنقّل من المستوى الأعلى إلى صفحة معيّنة ثم الانتقال إلى مورد معروف أنّه يتم تحميله من خلال الصفحة لاستنتاج معلومات حساسة من خلال توقيت التحميل. يحسّن هذا التغيير أيضًا الخصوصية من خلال منع موقع إلكتروني ضار من استخدام عمليات التنقّل لاستنتاج ما إذا كان المستخدم قد زار موقعًا إلكترونيًا معيّنًا من قبل.
منع تتبُّع HSTS
يخفّف هذا الإجراء من تتبُّع المستخدمين من قِبل جهات خارجية من خلال ذاكرة التخزين المؤقت لبروتوكول HSTS.
لا تتيح هذه الميزة ترقيات HSTS إلا لعمليات التنقّل من المستوى الأعلى، وتمنع ترقيات HSTS لطلبات الموارد الفرعية. يؤدي ذلك إلى جعل استخدام المواقع الإلكترونية التابعة لجهات خارجية لذاكرة التخزين المؤقت لبروتوكول HSTS لتتبُّع المستخدمين على الويب أمرًا غير عملي.
أوامر المنشئ: السمتان command وcommandfor
تتيح لك السمتان command وcommandfor في عناصر <button> تعيين
سلوك للأزرار بطريقة أكثر سهولة ووضوحًا، مع تقليل
الأخطاء وتبسيط مقدار JavaScript اللازم للتفاعل. عند النقر على الأزرار
التي تتضمّن السمتَين commandfor وcommand أو لمسها أو تفعيلها باستخدام ضغطة مفتاح، سيتم إرسال CommandEvent إلى العنصر الذي تشير إليه
commandfor، مع بعض السلوكيات التلقائية، مثل فتح مربّعات الحوار والعناصر المنبثقة.
ربط rel="facilitated-payment" لدعم عمليات الدفع الفوري
أضِفنا دعمًا لـ <link rel="facilitated-payment" href="..."> كإشارة إلى أنّه
على المتصفّح إعلام عملاء الدفع المسجّلين بعملية دفع فوري معلّقة.
السمة sourceElement في NavigateEvent
عندما يبدأ التنقّل من خلال عنصر (أي النقر على رابط أو إرسال نموذج)، ستعرض السمة sourceElement في NavigateEvent العنصر الذي بدأ التنقّل.
تغيير اسم السبب في NotRestoredReasons API
تغيّر NotRestoredReasons API بعض نصوص الأسباب لتتطابق مع
الأسماء الموحّدة. قد يلاحظ المطوّرون الذين يراقبون هذه الأسباب تغييرًا في نصوص الأسباب.
On-device Web Speech API
تجاهُل عنوان URL لبرنامج مشغّل الخدمات التغييرات في history.pushState
يعدّل هذا الإجراء السمة Client.url في برنامج مشغّل الخدمات لتجاهُل تغييرات عنوان URL للمستند باستخدام history.pushState() وواجهات برمجة التطبيقات الأخرى المشابهة لسجلّ التصفّح. من المفترض أن تكون السمة Client.url هي عنوان URL لإنشاء مستند HTML الذي يتجاهل هذه التغييرات.
توفير دعم السمتَين rel وrelList لـ SVGAElement
تتيح واجهة SVGAElement في SVG 2.0 معالجة عناصر <a>
بشكلٍ مشابه لعناصر رابط HTML. يؤدي توفير دعم السمتَين rel وrelList إلى تعزيز الأمان والخصوصية للمطوّرين. يضمن هذا التوافق مع عناصر رابط HTML الاتّساق وسهولة الاستخدام في جميع تقنيات الويب.
الطوابع الزمنية للإطارات المرمَّزة في RTC
تتمثّل هذه الميزة في عرض بعض الطوابع الزمنية على الويب والموجودة في الإطارات المرمَّزة في WebRTC التي يتم إرسالها من خلال RTCPeerConnection. الطوابع الزمنية المعنيّة هي:
- الطابع الزمني للالتقاط: الطابع الزمني لوقت التقاط الإطار في الأصل
- الطابع الزمني للاستلام: الطابع الزمني لوقت استلام الإطار
تعديل ProgressEvent لاستخدام النوع "مزدوج" للسمتَين "loaded" و"total"
يحتوي ProgressEvent على السمتَين loaded وtotal اللتَين تشيران إلى التقدُّم، ونوعهما الآن هو unsigned long long. باستخدام هذه الميزة، يتم تغيير نوع هاتَين السمتَين إلى double بدلاً من ذلك، ما يمنح المطوّر مزيدًا من التحكّم في القيمة. على سبيل المثال، يمكن للمطوّرين الآن إنشاء `ProgressEvent` بقيمة total تساوي 1 وقيمة loaded تزداد تدريجيًا من 0 إلى 1. يتوافق ذلك مع السلوك التلقائي لعنصر HTML <progress>
إذا تم حذف السمة max.
fetchLater API
fetchLater() API هي واجهة برمجة تطبيقات JavaScript لطلب عملية جلب مؤجّلة، وهي مفيدة بشكل خاص لإرسال الإشارات بشكل أكثر موثوقية في نهاية مدة بقاء الصفحة.
بعد استدعاء طلب مؤجّل في مستند، يضعه المتصفّح في قائمة الانتظار في الحالة PENDING، وسيتم استدعاؤه عند استيفاء أقرب شرط من الشروط التالية:
تم حذف المستند. بعد وقت محدّد من قِبل المستخدم. لأسباب تتعلّق بالخصوصية، سيتم تصفية جميع الطلبات المعلقة عندما يدخل المستند إلى ميزة "التخزين المؤقت للصفحات" بغض النظر عن مقدار الوقت المتبقي. يقرّر المتصفّح أنّه حان وقت إرسال الطلب.
تعرض واجهة برمجة التطبيقات FetchLaterResult التي تحتوي على حقل منطقي activated يمكن تعديله للإشارة إلى ما إذا تم إرسال الطلب المؤجّل أم لا. عند الإرسال بنجاح، سيتجاهل المتصفّح الاستجابة بأكملها، بما في ذلك النص الأساسي والعناوين.
يُرجى العِلم أنّه من وجهة نظر مستخدم واجهة برمجة التطبيقات، يكون وقت الإرسال الدقيق غير معروف.
عمليات تجربة جديدة
في Chrome 135، يمكنك الاشتراك في عمليات التجربة الجديدة التالية الجديدة.
منشئو الاهتمام
تضيف هذه الميزة السمة interesttarget إلى <button> و<a>
عناصر. تضيف السمة interesttarget سلوكيات "الاهتمام" إلى العنصر، بحيث يتم تشغيل الإجراءات على العنصر المستهدف عندما "يُظهر" المستخدم "اهتمامًا" بالعنصر. يمكن أن تشمل الإجراءات أشياء مثل عرض عنصر منبثق. سيتولى وكيل المستخدم رصد الحالات التي "يُظهر" فيها المستخدم "اهتمامًا" بالعنصر، باستخدام طرق مثل تمرير مؤشر الماوس فوق العنصر أو الضغط على مفاتيح الاختصار الخاصة على لوحة المفاتيح أو الضغط مع الاستمرار على العنصر على شاشات اللمس.
عند إظهار الاهتمام أو فقدانه، يتم إطلاق InterestEvent على الهدف، وله إجراءات تلقائية في حالة العناصر المنبثقة، وهي عرض العنصر المنبثق وإخفاؤه.
صحة البيانات المستنِدة إلى التوقيع
تزوّد هذه الميزة مطوّري الويب بآلية للتحقّق من مصدر الموارد التي يعتمدون عليها، ما يؤدي إلى إنشاء أساس فني للثقة في تبعيات الموقع الإلكتروني. باختصار، يمكن للخوادم توقيع الردود باستخدام زوج مفاتيح Ed25519، ويمكن لمطوّري الويب أن يطلبوا من وكيل المستخدم التحقّق من التوقيع باستخدام مفتاح عام معيّن. يقدّم ذلك إضافة مفيدة إلى عمليات التحقّق المستندة إلى عنوان URL التي توفّرها سياسة أمان المحتوى من جهة، وعمليات التحقّق المستندة إلى المحتوى التي توفّرها سلامة الموارد الفرعية من جهة أخرى.
الإيقاف والإزالة
يقدّم هذا الإصدار من Chrome عمليات الإيقاف والإزالة المُدرَجة أدناه. يمكنك الانتقال إلى ChromeStatus.com للاطّلاع على قوائم عمليات الإيقاف المخطط لها وعمليات الإيقاف الحالية وعمليات الإزالة السابقة.
يوقف هذا الإصدار من Chrome ميزة واحدة نهائيًا.
إيقاف دوال الجلب لـ Intl Locale Info
Intl Locale Info API هو اقتراح في المرحلة 3 من ECMAScript TC39 لتحسين الكائن Intl.Locale من خلال عرض معلومات الإعدادات المحلية، مثل بيانات الأسبوع (اليوم الأول في الأسبوع، ويوم بدء عطلة نهاية الأسبوع، ويوم انتهاء عطلة نهاية الأسبوع، والحد الأدنى لليوم في الأسبوع الأول)، ودورة الساعة لاتجاه النص المستخدَمة في الإعدادات المحلية. أضاف Chrome عملية تنفيذ في Chrome 99، ولكن تم تغيير الاقتراح لنقل العديد من دوال الجلب إلى الدوال. علينا إزالة دوال الجلب التي تم إيقافها نهائيًا وإعادة إطلاق الدوال التي تمت إعادة تسميتها.
يزيل هذا الإصدار من Chrome ثلاث ميزات.
إزالة الطريقة navigator.xr.supportsSession التي تم إيقافها نهائيًا
تم استبدال navigator.xr.supportsSession في مواصفات WebXR بالطريقة navigator.xr.isSessionSupported في سبتمبر 2019 بعد تلقّي ملاحظات من TAG حول شكل واجهة برمجة التطبيقات. تم وضع علامة على هذه الطريقة على أنّها متوقفة نهائيًا في Chrome منذ ذلك الحين، ما يؤدي إلى ظهور تحذير في وحدة التحكّم يعيد توجيه المطوّرين إلى واجهة برمجة التطبيقات المعدَّلة. إنّ استخدام الاستدعاء منخفض جدًا، وقد تم التأكّد من تعديل جميع الأُطر الرئيسية المستخدَمة لإنشاء محتوى WebXR لاستخدام الاستدعاء الأحدث.
إزالة السمة canTransition في NavigateEvent
في Chrome 108، تم استبدال الطريقة transitionWhile() والسمة canTransition في NavigateEvent بالطريقة intercept() والسمة canIntercept الجديدتَين. في ذلك الوقت، تمت إزالة الطريقة transitionWhile(). ومع ذلك، نسينا إزالة السمة canTransition، وبدلاً من ذلك، تركناها كاسم بديل لـ canIntercept. في Chrome 135، نعمل على إصلاح ذلك وإزالة canTransition. يمكن استبدال أي استخدامات لـ canTransition بـ canIntercept، بدون أي تغيير في السلوك.
إزالة الحدّ الأقصى maxInterStageShaderComponents في WebGPU
تتم إزالة الحدّ الأقصى maxInterStageShaderComponents بسبب مجموعة من العوامل:
- التكرار مع
maxInterStageShaderVariables: يخدم هذا الحدّ الأقصى بالفعل غرضًا مشابهًا، حيث يتحكّم في مقدار البيانات التي يتم تمريرها بين مراحل التظليل. - الاختلافات البسيطة: على الرغم من وجود اختلافات طفيفة في كيفية احتساب الحدّين الأقصيين، فإنّ هذه الاختلافات طفيفة ويمكن إدارتها بفعالية ضِمن
maxInterStageShaderVariables limit. - التبسيط: تؤدي إزالة
maxInterStageShaderComponentsإلى تبسيط واجهة التظليل وتقليل التعقيد للمطوّرين. بدلاً من إدارة حدّين أقصيين منفصلَين (كلاهما ينطبقان في الوقت نفسه ولكن مع اختلافات طفيفة)، يمكنهم التركيز علىmaxInterStageShaderVariablesالذي يحمل اسمًا أكثر ملاءمة وشاملاً.