تاريخ النشر: 10 أغسطس 2023، تاريخ آخر تعديل: 29 يونيو 2026
سيتم إيقاف حدث unload نهائيًا بشكل تدريجي من خلال تغيير الإعداد التلقائي تدريجيًا لكي تتوقف معالِجات unload عن التنشيط على الصفحات ما لم توافق الصفحة صراحةً على إعادة تفعيلها.
المخطط الزمني لإيقاف الميزة نهائيًا
أشرنا إلى أنّه من المرجّح أن يخضع سلوك إلغاء التحميل لتغييرات في وقت مبكر من يناير 2019، عندما أعلنّا عن نيّتنا تنفيذ ميزة "التخزين المؤقت للصفحات". بالتزامن مع أعمال التنفيذ، أجرينا حملة توعية واسعة النطاق أدّت إلى انخفاض كبير في استخدام حدث unload. بالإضافة إلى هذا التواصل، بدأنا في توفير طرق لاختبار تأثير إيقاف ميزة unload نهائيًا في الإصدار 115 من Chrome:
- اختبار Permission-Policy API for unload في Chrome 115 (يوليو 2023)
- الاختبار المحلي من خلال تفعيل ميزة تجريبية في الإصدار 117 من Chrome (سبتمبر 2023)
خلال عام 2024، عالجنا العديد من المشاكل التي كانت تحول دون بدء عملية الطرح، وخلال عام 2025، أوقفنا نهائيًا استخدام هذه الميزة في أهم 50 موقعًا إلكترونيًا:
| الهدف | تاريخ الإنجاز | أهم 50 موقعًا إلكترونيًا | النسبة المئوية لنقاط الانطلاق الأخرى |
|---|---|---|---|
| 135 | 26 مارس 2025 | 1 (www.google.com) |
0 |
| 139 | 30 يوليو 2025 | 5 | 0 |
| 140 | 27 أغسطس 2025 | 10 | 0 |
| 141 | 24 سبتمبر 2025 | 25 | 0 |
| 142 | 22 أكتوبر 2025 | 50 | 0 |
في عام 2026، بدأنا بطرح هذه الميزة لجميع المصادر، وذلك على مدار 8 مراحل (أو حوالي 32 أسبوعًا)، كما هو موضّح بالتفصيل في الجدول التالي.
| الهدف | تاريخ الإنجاز | أهم 50 موقعًا إلكترونيًا | النسبة المئوية لعمليات تحميل صفحات Chrome لجميع المواقع الإلكترونية |
|---|---|---|---|
| 146 | 10 مارس 2026 | 50 | 1 |
| 147 | 7 أبريل 2026 | 50 | 5 |
| 148 | 5 مايو 2026 | 50 | 10 |
| 149 | 2 يونيو 2026 | 50 | 20 |
| 150 | 30 يونيو 2026 | 50 | 40 |
| 151 | 28 يوليو 2026 | 50 | 60 |
| 152 | 25 أغسطس 2026 | 50 | 80 |
| 153 | 22 سبتمبر 2026 | 50 | 100 |
يستند الطرح الكامل إلى عمليات تحميل الصفحات (مع الاتساق بمرور الوقت)، وليس إلى المستخدمين أو المواقع الإلكترونية الفردية لتجنُّب التأثير في مستخدمين أو مواقع إلكترونية أكثر من غيرها، كما هو موضّح بالتفصيل في "إشعار إيقاف نهائي".
يُرجى العِلم أنّنا نوفّر أيضًا قائمة بخيارات إيقاف الميزة في حال لم يوفّر الجدول الزمني لإيقاف الميزة وقتًا كافيًا لإيقاف استخدام حدث unload.
خلفية
تم تصميم unload ليتم تشغيله عند إلغاء تحميل المستند. من الناحية النظرية، يمكن استخدامها لتشغيل الرمز في أي وقت ينتقل فيه المستخدم من صفحة إلى أخرى، أو كدالة ردّ عند انتهاء الجلسة.
تشمل السيناريوهات التي تم فيها استخدام هذا الحدث بشكلٍ شائع ما يلي:
- حفظ بيانات المستخدم: احفظ البيانات قبل مغادرة الصفحة.
- تنفيذ مهام التنظيف: إغلاق الموارد المفتوحة قبل إغلاق الصفحة
- إرسال الإحصاءات: إرسال البيانات ذات الصلة بتفاعلات المستخدم في نهاية الجلسة
ومع ذلك، فإنّ الحدث unload غير موثوق به على الإطلاق.
على أجهزة الكمبيوتر المكتبي في Chrome وFirefox، تكون unload موثوقة إلى حدّ ما، ولكنّها تؤثّر سلبًا في أداء الموقع الإلكتروني من خلال منع استخدام ميزة "التخزين المؤقت للصفحات" (bfcache).
على متصفحات الأجهزة الجوّالة، لا يتم تشغيل unload غالبًا لأنّه يتم تصغير علامات التبويب بشكل متكرر ثم إغلاقها. لهذا السبب، تختار المتصفحات إعطاء الأولوية لميزة "التخزين المؤقت للصفحات" على الأجهزة الجوّالة على unload، ما يجعلها أقل موثوقية. يستخدم Safari هذا السلوك أيضًا على أجهزة الكمبيوتر.
يرى فريق Chrome أنّ استخدام نموذج الأجهزة الجوّالة الذي يمنح الأولوية لميزة "التخزين المؤقت للصفحات" على unload على أجهزة الكمبيوتر سيؤدي إلى حدوث مشاكل، إذ سيصبح أقل موثوقية أيضًا، علمًا بأنّه كان موثوقًا إلى حدّ ما في Chrome (وFirefox). بدلاً من ذلك، يهدف Chrome إلى إزالة الحدث unload تمامًا. وحتى ذلك الحين، سيظل متاحًا على أجهزة الكمبيوتر المكتبي في Chrome للمستخدمين الذين أوقفوا نهائيًا إيقاف الميزة.
لماذا تم إيقاف حدث unload نهائيًا؟
يشكّل إيقاف unload نهائيًا خطوة أساسية في إدراكنا للتغييرات الكبيرة التي طرأت على الويب. يمنح حدث unload إحساسًا زائفًا بالتحكّم في دورة حياة التطبيق، وهو أمر غير صحيح بشكل متزايد في طريقة تصفّحنا للويب في عالم الحوسبة الحديث.
تتوقف أنظمة التشغيل على الأجهزة الجوّالة بشكل متكرر أو تلغي تحميل صفحات الويب للحفاظ على الذاكرة، كما أنّ متصفحات أجهزة الكمبيوتر المكتبي تفعل ذلك بشكل متزايد الآن للأسباب نفسها. حتى بدون تدخلات نظام التشغيل، غالبًا ما يبدّل المستخدمون علامات التبويب ويغلقون علامات التبويب القديمة بدون "مغادرة الصفحات" رسميًا.
إنّ إزالة حدث unload باعتباره قديمًا هو اعتراف بأنّنا كمطوّري ويب بحاجة إلى ضمان تطابق نموذجنا مع نموذج العالم الحقيقي وعدم الاعتماد على مفاهيم قديمة لم تعُد صحيحة، إن كانت صحيحة في أي وقت.
بدائل لأحداث unload
بدلاً من unload، يُنصح باستخدام:
visibilitychange: لتحديد وقت تغيير إذن الوصول إلى الصفحة. يحدث هذا الحدث عندما ينتقل المستخدم بين علامات التبويب أو يصغّر نافذة المتصفّح أو يفتح صفحة جديدة. يجب مراعاة حالةhiddenباعتبارها آخر وقت يمكن الاعتماد عليه لحفظ بيانات التطبيق وبيانات المستخدمين.pagehide: لتحديد الوقت الذي خرج فيه المستخدم من الصفحة. يحدث هذا الحدث عندما ينتقل المستخدم بعيدًا عن الصفحة أو يعيد تحميلها أو يغلق نافذة المتصفّح. لا يتم تنشيط الحدثpagehideعند تصغير الصفحة أو التبديل إلى علامة تبويب أخرى. يُرجى العِلم أنّه بما أنّ حدثpagehideلا يجعل الصفحة غير مؤهَّلة للاستفادة من ميزة "التخزين المؤقت للصفحات"، من المحتمل أن تتم استعادة الصفحة بعد إطلاق هذا الحدث. إذا كنت بصدد تنظيف أي موارد في هذا الحدث، قد تحتاج إلى استعادتها عند استعادة الصفحة.
يختلف حدث beforeunload قليلاً عن unload في حالة الاستخدام، إذ إنّه حدث قابل للإلغاء. ويتم استخدامه غالبًا لتحذير المستخدمين من التغييرات غير المحفوظة عند الانتقال إلى صفحة أخرى. هذا الحدث غير موثوق به أيضًا لأنّه لن يتم تنشيطه إذا تم إغلاق علامة تبويب في الخلفية. ننصحك بالحدّ من استخدام beforeunload وإضافته بشكل مشروط فقط. بدلاً من ذلك، استخدِم الأحداث المذكورة سابقًا لمعظم عمليات استبدال unload.
لمزيد من التفاصيل، اطّلِع على هذه النصيحة بشأن عدم استخدام المعالج unload مطلقًا.
رصد استخدام unload
تتوفّر أدوات مختلفة لمساعدتك في العثور على مرات ظهور الحدث unload على الصفحات. يتيح ذلك للمواقع الإلكترونية معرفة ما إذا كانت تستخدم هذا الحدث، سواء في الرمز البرمجي الخاص بها أو باستخدام المكتبات، وبالتالي قد تتأثر بعملية الإيقاف النهائي القادمة.
أدوات مطوري البرامج في Chrome
تتضمّن أدوات مطوّري البرامج في Chrome تدقيق back-forward-cache لمساعدتك في تحديد المشاكل التي قد تمنع صفحتك من أن تكون مؤهَّلة للاستفادة من ميزة "التخزين المؤقت للصفحات"، بما في ذلك استخدام معالج unload.
لاختبار ميزة "التخزين المؤقت للصفحات"، اتّبِع الخطوات التالية:
في صفحتك، افتح "أدوات مطوري البرامج"، ثم انتقِل إلى التطبيق > الخدمات التي تعمل في الخلفية > ميزة "التخزين المؤقت للصفحات".
انقر على اختبار ميزة "التخزين المؤقت للصفحات"، وسينقلك Chrome تلقائيًا إلى
chrome://terms/ثم يعيدك إلى صفحتك. يمكنك بدلاً من ذلك النقر على زرَّي الرجوع والتقديم في المتصفّح.
إذا كانت صفحتك غير مؤهَّلة للاستفادة من ميزة "التخزين المؤقت للصفحات"، ستعرض لك علامة التبويب التخزين المؤقت للصفحات قائمة بالمشاكل. ضِمن إتاحة اتّخاذ إجراء، يمكنك معرفة ما إذا كنت تستخدم unload:
Reporting API
يمكن استخدام Reporting API بالتزامن مع "سياسة أذونات" للقراءة فقط من أجل رصد استخدام unload من قِبل مستخدمي موقعك الإلكتروني.
لمزيد من التفاصيل، يُرجى الاطّلاع على استخدام Reporting API للعثور على عمليات إلغاء التحميل.
واجهة برمجة التطبيقات notRestoredReasons Bfcache
تقدّم السمة notRestoredReasons، التي تمت إضافتها إلى الفئة PerformanceNavigationTiming، معلومات حول ما إذا تم حظر المستندات من استخدام bfcache أثناء التنقّل، والسبب. في ما يلي مثال على كيفية ظهور تحذير عنصر الاستجابة الخاص بمستمع unload حالي:
{
children: [],
id: null,
name: null,
reasons: [
{"reason", "unload-listener"}
],
src: null,
url: "https://www.example.com/page/"
}
التحكّم في إمكانية الوصول إلى unload
سيتم إيقاف الحدث unload نهائيًا في Chrome تدريجيًا. في الوقت الحالي، يمكنك استخدام أدوات مختلفة للتحكّم في هذا السلوك والاستعداد لإيقاف هذه الميزة نهائيًا. يُرجى العِلم أنّه لا يجب الاعتماد على هذه الأساليب على المدى الطويل، ويجب التخطيط للانتقال إلى البدائل في أقرب وقت ممكن.
تتيح لك الخيارات التالية تفعيل معالجات unload أو إيقافها لاختبار طريقة عمل موقعك الإلكتروني بدونها حتى تتمكّن من الاستعداد للإيقاف النهائي القادم. تتوفّر أنواع مختلفة من السياسات:
- سياسة الأذونات: هي واجهة برمجة تطبيقات منصة تتيح لمالكي المواقع الإلكترونية التحكّم في الوصول إلى الميزات على مستوى الموقع الإلكتروني أو الصفحة الفردية باستخدام عناوين HTTP.
- سياسات المؤسسة: أدوات لمشرفي تكنولوجيا المعلومات لإعداد Chrome لمؤسستهم أو نشاطهم التجاري ويمكن ضبطها باستخدام لوحة تحكّم المشرف، مثل وحدة تحكّم المشرف في Google.
- ميزات Chrome التجريبية: تتيح هذه الميزة للمطوّر الفردي تغيير إعداد الإيقاف النهائي
unloadلاختبار التأثير في مواقع إلكترونية مختلفة.
سياسة الأذونات
تمت إضافة سياسة الأذونات من الإصدار 115 من Chrome للسماح للمواقع الإلكترونية بإيقاف استخدام معالِجات unload والاستفادة فورًا من ميزة "التخزين المؤقت للصفحات" لتحسين أداء المواقع الإلكترونية. اطّلِع على هذه الأمثلة حول كيفية ضبط هذا الإعداد لموقعك الإلكتروني. يتيح ذلك للمواقع الإلكترونية الاستعداد لإيقاف unload نهائيًا.
تم تمديد هذه الفترة في الإصدار 117 من Chrome للسماح للمواقع الإلكترونية بإجراء العكس، ولتفعيل خيار مواصلة محاولة تشغيل معالِجات unload كما هو الحال الآن، وذلك لأنّ Chrome سيغيّر الإعداد التلقائي لهذه المعالِجات لكي لا يتم تشغيلها في المستقبل. اطّلِع على هذه الأمثلة حول كيفية مواصلة السماح بتفعيل معالجات إلغاء التحميل لموقعك الإلكتروني. على الرغم من أنّنا ننصح مالكي المواقع الإلكترونية بالتوقّف عن استخدام معالِجات unload بسبب عدم موثوقيتها، نخطّط لإتاحة خيار إيقافها لفترة طويلة في المستقبل للمواقع الإلكترونية التي تحتاج إلى استخدامها. يُرجى العِلم أنّ إعادة تفعيل unload لن تجعلها أكثر موثوقية على الأجهزة الجوّالة، بل ستؤدي فقط إلى استعادة الوضع الحالي.
سياسة المؤسسة
يمكن للمؤسسات التي لديها برامج تعتمد على حدث unload لتعمل بشكل صحيح استخدام سياسة ForcePermissionPolicyUnloadDefaultEnabled لمنع الإيقاف النهائي التدريجي للأجهزة التي تتحكّم فيها. من خلال تفعيل هذه السياسة، سيظلّ unload مفعّلاً تلقائيًا لجميع المصادر. قد تضع الصفحة سياسة أكثر صرامة إذا أرادت ذلك. وكما هو الحال مع خيار إيقاف "سياسة الأذونات"، هذه أداة للحدّ من التغييرات المحتملة التي قد تؤدي إلى حدوث مشاكل. مرة أخرى، ننصح مالكي المواقع الإلكترونية بالتوقّف عن الاعتماد على معالِجات unload، ولكن يخطّط Chrome لإتاحة خيار إيقاف هذه الميزة في المؤسسات لفترة طويلة في المستقبل للمواقع الإلكترونية التي تحتاج إلى استخدامها.
ميزات Chrome التجريبية ومفاتيح سطر الأوامر
بالإضافة إلى سياسة المؤسسة، يمكنك إيقاف الإيقاف النهائي للمستخدمين الفرديين باستخدام علامات Chrome ومفاتيح أسطر الأوامر:
سيؤدي ضبط chrome://flags/#deprecate-unload على enabled إلى تقديم الإعداد التلقائي للإيقاف النهائي ومنع تشغيل معالِجات unload. سيظلّ من الممكن إلغاء هذه الإعدادات على أساس كل موقع إلكتروني على حدة باستخدام "سياسة الأذونات"، ولكن سيستمرّ تفعيلها تلقائيًا.
يمكن أيضًا التحكّم في هذه الإعدادات من خلال مفاتيح سطر الأوامر.
مقارنة الخيارات
يلخّص الجدول التالي الاستخدامات المختلفة للخيارات التي تمت مناقشتها سابقًا:
| تقديم موعد الإيقاف النهائي | تقديم موعد إيقاف العمل (مع استثناءات) | منع الإيقاف النهائي لتأمين الوقت اللازم لنقل البيانات | |
|---|---|---|---|
| سياسة الأذونات (تنطبق على الصفحات/المواقع الإلكترونية) |
نعم | نعم | نعم |
| سياسة المؤسسة (تنطبق على الأجهزة) |
لا | لا | نعم |
| الميزات التجريبية في Chrome (تنطبق على المستخدمين الفرديين) |
نعم | لا | لا |
| مفاتيح سطر الأوامر في Chrome (تنطبق على المستخدمين الفرديين) |
نعم | لا | نعم |
الخاتمة
يتم إيقاف معالِجات unload نهائيًا. لقد كانت هذه الأحداث غير موثوقة لفترة طويلة، ولا يمكن ضمان تشغيلها في جميع الحالات التي يتم فيها إتلاف مستند. بالإضافة إلى ذلك، فإنّ معالِجات unload غير متوافقة مع bfcache.
على المواقع الإلكترونية التي تستخدم معالجات unload الاستعداد لإيقافها نهائيًا من خلال اختبار أي معالجات unload حالية وإزالتها أو نقلها أو تأخير الإيقاف النهائي إذا دعت الحاجة إلى مزيد من الوقت.
الإقرارات
نشكر "كينجي باهيو" و"فيرغال دالي" و"أدريانا خارا" و"جيريمي فاغنر" على ملاحظاتهم المفيدة بشأن المراجعة.
الصورة الرئيسية من Anja Bauermann على Unsplash