Summary

  • تتيح حالة البطارية لتطبيق الويب تقليل العمل عند انخفاض الطاقة، مثل تخفيف فحص البريد أو حفظ المستند قبل انطفاء الجهاز.
  • قد تميز القراءات الدقيقة للشحن والوقت المتبقي جهازاً من غيره. تظهر وثائق W3C انتقال هذا القلق إلى نقاش المعيار ثم إلى نصائح بشأن الدقة والإذن والتمويه وحدود الوصول.

لا تبدو صفحة البريد التي تطرق باب الخادم كل بضع ثوانٍ، والبطارية تلتقط أنفاسها الأخيرة، ضيفاً مهذباً. محرر النصوص الذي يحفظ الفقرة قبل الإطفاء أفضل تصرفاً. تذكر وثيقة W3C لعام 2016 المثالين. يعطي المتصفح التطبيق إشارة عن الطاقة، ويختار التطبيق أن يعمل أقل أو أن يصون ما أُنجز. للبطارية رأي، وللكاتب رأي آخر؛ والإشارة نافعة لهما معاً.

في أول مسودة علنية في أبريل 2011 كان التصميم حدثاً منفصلاً عن واجهة أوسع لمعلومات النظام. طُرحت حالة استخدام البطارية والشحن، ومستوى من صفر إلى مئة، ووقت متبقٍ بالثواني. كان الفريق لا يزال يبحث عن استخدامات قوية لبعض الحقول. المثال يكتب المستوى في سجل التطبيق. هذا شكل مبكر يختلف عن getBattery() اللاحق. وُضع المقياس أمام الصفحات قبل حسم عدد تدريجاته التي تحتاجها كل صفحة فعلاً.

التفصيل نافع لمن يقرر متى يؤجل العمل، ونافع أيضاً لمن يريد التعرف إلى الزائر. مستوى الشحن وحالته وتقدير الوقت المتغير يصنعون صورة مؤقتة للجهاز. لا تحتاج الصفحة إلى دفتر العناوين لتعرف شيئاً مميزاً عن الحاسوب. يكفي أن تقرأ عداداً يبدو عادياً لأنه موجود في كل جهاز محمول.

دخلت هذه المشكلة إلى غرفة كتابة المعيار. ففي رسالة لمجموعة عمل W3C في يوليو 2015 نقل رئيسها Frederick Hirsch اقتراحات مرتبطة ببحث أصلي: التحذير من أن القراءة عالية الدقة قد تساعد على بصمة الجهاز، والنظر في طلب الإذن، وإعلام المستخدم باستعمال الواجهة. الرسالة دليل على نقاش محدد، وليست إحصاءً متخيلاً لكل المواقع التي راقبت زوارها عبر البطارية.

أدخلت وثيقة مارس 2016 التحذير إلى قسم الخصوصية: ينبغي للمتصفح تجنب الدقة العالية، ويمكنه طلب الإذن أو تمويه القيمة. تمنح navigator.getBattery() كائناً من نوع BatteryManager بحالة الشحن والمستوى والوقت المقدر للشحن أو التفريغ. حين يعجز المتصفح عن عرض الحالة الحقيقية، تبدو القيم الافتراضية كأن البطارية ممتلئة وموصولة بالكهرباء. لذلك لا تستطيع صفحة أن تعاقب مستخدماً لأن متصفحه أخفى قراءة الطاقة. الضوء الأخضر قد يكون ستارة، لا احتفالاً بالبطارية.

في مسودة أكتوبر 2024 أصبحت getBattery() وظيفة سياق آمن. تسمح Permissions Policy لميزة battery افتراضياً بالمصدر 'self'، ويحصل المستند المحظور على NotAllowedError. بقي التحذير من القراءات الدقيقة وإمكان طلب الإذن أو إخفاء بعض التفاصيل. تستطيع الصفحة أن تتصرف برفق مع الطاقة من دون تقرير طبي لحظة بلحظة عن البطارية.

يمتد سجل منشورات W3C من مسودات 2011 إلى مراحل 2016 وتعديلات 2024. هذه تواريخ النصوص، وليست يوماً واحداً تشابه فيه سلوك كل المتصفحات. الدرس أبسط: الإشارة النافعة لتوفير الطاقة تصبح بطاقة تعريف إذا تكلم المؤشر بلغة أدق مما تحتاجه الصفحة.

ما زال حفظ المستند قبل انطفاء الشاشة فكرة جيدة. وما زال تخفيف فحص البريد لفتة مهذبة. لا يحتاج أي منهما إلى عد آخر أنفاس البطارية.