Screen width و height و DevicePixelRatio تظهر بسهولة في اختبارات fingerprint، لكنها لا تعني أن كل اختلاف يمثل جهازًا مختلفًا. Windows scaling، Retina displays، zoom، Remote Desktop، والشاشات المتعددة كلها تغير ما تراه الصفحة. القياس المفيد يبدأ بمعرفة طبقة العرض المستخدمة ثم مقارنة القيم مع إعدادات فعلية.
افصل CSS pixels عن physical pixels
JavaScript screen.width يعمل بوحدات CSS pixels في كثير من البيئات، بينما الدقة الفيزيائية قد تكون أعلى. DevicePixelRatio يربط تقريبًا بين العالمين لكنه يتأثر بال scaling. لذلك لا تضرب رقمين وتفترض أنك عرفت panel الحقيقي في كل حالة.
اختبر الشاشات المتعددة
انقل النافذة بين شاشتين مختلفتين وسجل DPR و screen metrics وأحداث التغيير. بعض التطبيقات تعيد حساب القيمة فورًا وبعضها يحتاج reload. إذا كان المتصفح متعدد النوافذ، تأكد أن كل WebContents يقرأ الشاشة التي يوجد عليها لا قيمة global قديمة.
خطوات عملية
- افتح صفحة قياس.
- سجل القيم على الشاشة الأولى.
- انقل النافذة بالكامل للثانية.
- أعد القياس قبل وبعد reload.
افحص تأثير Remote Desktop
جلسة RDP أو VM قد تعرض دقة افتراضية تتغير عند reconnect. لا تقارنها مباشرة بجهاز مادي. في اختبارات automation على خوادم، وثق viewport و screen emulation منفصلين حتى تعرف ما هو مقصود وما نتج من البيئة.
راقب الاتساق داخل البروفايل
المشكلة التشغيلية تظهر إذا كان البروفايل يعلن screen metrics مختلفة بصورة غير مفسرة بين تشغيلين على نفس الجهاز والإعداد. اجعل الاختبار regression بعد تحديث Electron أو تغيير window creation flags.
قائمة مراجعة
- نفس الجهاز والإعداد.
- نفس monitor عند المقارنة.
- وثق scaling.
- افصل viewport عن screen.
لا تستخدم القيمة وحدها للحكم
Screen metrics إشارة واحدة ضمن عشرات الإشارات. كثير من المستخدمين يشتركون في نفس 1920×1080 أو DPR شائع. قيمة نادرة قد تأتي من scaling طبيعي. تجنب الادعاء أن الاختلاف يكشف هوية محددة.
حوّل القياس إلى تشخيص UI
هذه القيم مفيدة أيضًا لاكتشاف bugs: popup صغير جدًا، mobile emulation بمقاس خاطئ، أو window restore على monitor لم يعد موجودًا. ربط fingerprint metrics بمشاكل UX يعطي فائدة مباشرة بدل اختبار نظري.
اختبر Zoom والشاشات المتعددة واستعادة النوافذ معًا
غيّر Page Zoom و OS Scaling كلًا على حدة، ثم انقل النافذة بين شاشتين تختلفان في DPR والدقة. سجل screen و viewport و outer/inner dimensions قبل النقل وبعده وقبل reload وبعده. هذا يكشف هل التطبيق يحتفظ بقيمة global قديمة أو يقرأ display الفعلي لكل نافذة. بعد ذلك افصل الشاشة الثانية وأعد تشغيل المتصفح مع نافذة كانت محفوظة عليها؛ يجب أن يعيد موضعها إلى مساحة مرئية وألا يفتح popup خارج الشاشة أو بحجم مصغر. هذه السيناريوهات مفيدة أكثر من النظر إلى DPR كرقم بصمة فقط، لأنها تربطه بمشاكل حقيقية مثل Mobile View بحجم خاطئ أو restore على monitor لم يعد موجودًا. عند المقارنة، ثبّت بقية الظروف حتى لا تخلط Zoom و Scaling و Display Placement في تغير واحد.
قائمة مراجعة
- Zoom منفصل عن OS Scaling.
- نقل بين شاشتين.
- Reload قبل وبعد النقل.
- Restart بعد فصل شاشة محفوظ عليها window.
افصل الاتساق عن محاولة التقليد
عند تقييم «Screen و DevicePixelRatio: كيف تقرأ اختلافات العرض بدون مبالغة» ركز على الاتساق بين القيم بدل السعي إلى جعل كل قيمة تبدو مختلفة. أنشئ جدولًا يربط الشبكة وال ـtimezone واللغة وال ـUA والخصائص التي يغيرها المنتج، ثم افحص هل توجد تناقضات لا يمكن تفسيرها. أعد القياس بعد restart وبعد تغيير الشبكة لأن بعض القيم قد تأتي من cache أو من طبقة مختلفة. لا تعتبر اختلافًا واحدًا دليلًا على تتبع أو كشف؛ المطلوب مجموعة إشارات متوافقة وسيناريو يمكن تكراره. هذا يقلل القرارات المبنية على مواقع فحص واحدة أو نتائج لحظية.
قائمة مراجعة
- تسجيل القيم في نفس اللحظة.
- مقارنة بعد restart.
- تغيير متغير واحد فقط.
- تجنب الاستنتاج من أداة فحص واحدة.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…