النافذة وبيئة التشغيل

النافذة وبيئة التشغيل

النافذة وبيئة وقت التشغيل

تفترض بعض المستندات وجود بيئة تصفح — نافذة، موقع، تخزين، أحداث. تُنمذج هذه الطبقة تلك الكائنات في Python النقي بحيث يمكن معالجة هذه المستندات على الخادم دون الحاجة إلى متصفح.


كائن النافذة

Window يرسخ البيئة، مع WindowEventLoop يدفع معالجة الأحداث، وScreen وVisualViewport وBarProp يُنمذجون حالة العرض. BrowsingContext يربط النافذة بمستندها.

حالة التنقل

Location وHistory يُنمذجان العنوان وسجل الجلسة؛ Navigator يُبلغ عن هوية البيئة، قابلة للتكوين عبر set_default_user_agent().

الأحداث

واجهة EventTarget مع عائلة Event — CustomEvent، UIEvent، MouseEvent، KeyboardEvent، FocusEvent، InputEvent، PopStateEvent، HashChangeEvent، ErrorEvent — تنفّذ إرسال الأحداث وفق المعايير. AbortController وAbortSignal يقدمان الإلغاء.

التخزين والرسائل

Storage يُنمذج التخزين الويب القائم على المفتاح والقيمة. MessageChannel، MessagePort، وBroadcastChannel يغطيون تمرير الرسائل، مع مساعدين النسخ المُهيكل (clone_value) خلفهم.

المراقبين والأداء

IntersectionObserver وResizeObserver (مع أنواع الإدخال الخاصة بهما) يُنمذجان واجهات برمجة المراقبة، بينما Performance وPerformanceEntry وConsole يُكملون سكربتات خدمات وقت التشغيل التي تُلامس عادةً.


نصائح وأفضل الممارسات

  • لا تتعامل مع هذه الطبقة إلا عند معالجة المستندات التي تعتمد فعليًا على حالة البيئة — التحليل والتنسيق لا يتطلبانها أبدًا.
  • استخدم set_default_user_agent() عندما يتفرّع المنطق اللاحق بناءً على هوية Navigator.
  • ربط AbortSignal بعملية معالجة طويلة الأمد لإلغاء نظيف

مشكلات شائعة

المشكلةالسببالحل
السكريبت يتوقع المتغيّرات العامة للنافذةالمستند مُعد للمتصفحاتقدّم طبقة البيئة Window
الأحداث لا تُطلق أبداًلا توجد حلقة أحداث تدفع الإرسالاستخدم WindowEventLoop
الفرع المعتمد على وكيل المستخدم يتصرف بشكل غير سليمسلسلة UA الافتراضية ساريةتعيين عبر set_default_user_agent()

FAQ

هل أحتاج إلى Window لتحليل HTML؟

لا — طبقة البيئة اختيارية؛ التحليل، CSSOM، والتخطيط مستقلون عنها.

ما هي أنواع الأحداث التي تم نمذجتها؟

العائلة القياسية: UI، الفأرة، لوحة المفاتيح، التركيز، الإدخال، popstate، hashchange، الخطأ، والأحداث المخصصة، جميعها تُرسل عبر EventTarget.

هل التخزين الويب دائم؟

Storage يُنمذج سطح API لأغراض المعالجة؛ الاستمرارية تعتمد على التطبيق المضمن.


API Reference ملخص

فئة/طريقةوصف
Windowمرساة بيئة التصفح
Locationحالة العنوان
Historyسجل الجلسة
EventTargetواجهة توزيع الحدث
AbortControllerوحدة التحكم بالإلغاء
IntersectionObserverملاحظة التقاطع
set_default_user_agentتكوين هوية Navigator

انظر أيضاً

 العربية