پنجره و محیط زمان اجرا

پنجره و محیط زمان اجرا

پنجره و محیط زمان اجرا

برخی اسناد فرض می‌کنند یک محیط مرورگری وجود دارد — یک پنجره، یک مکان، ذخیره‌سازی، رویدادها. این لایه این اشیاء را در 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 (با انواع ورودی خود) مدل APIهای مشاهده را ارائه می‌دهند، در حالی که Performance، PerformanceEntry و Console به اسکریپت‌های خدمات زمان اجرا که معمولاً مورد استفاده قرار می‌گیرند، تکمیل می‌کنند.


نکات و بهترین شیوه‌ها

  • فقط زمانی که در حال پردازش اسنادی هستید که واقعاً به وضعیت محیط وابسته‌اند این لایه را دست بزنید — تجزیه و استایل‌دهی هرگز به آن نیاز ندارند.
  • از set_default_user_agent() استفاده کنید هنگامی که منطق پایین‌دست بر پایه هویت Navigator شاخه می‌کند.
  • اتصال AbortSignal به پردازش طولانی‌مدت برای لغو تمیز

مسائل رایج

مسئلهدلیلرفع
اسکریپت انتظار دارد متغیرهای سراسری window موجود باشندسند برای مرورگرها نوشته شده استلایهٔ محیط Window را فراهم کنید
رویدادها هرگز فعال نمی‌شوندهیچ حلقهٔ رویدادی برای هدایت ارسال وجود ندارداز WindowEventLoop استفاده کنید
شاخهٔ وابسته به User-agent رفتار نادرست داردرشتهٔ پیش‌فرض UA فعال استاز طریقset_default_user_agent()تنظیم می‌شود

FAQ

آیا برای تجزیه HTML به یک Window نیاز دارم؟

خیر — لایهٔ محیطی اختیاری است؛ تجزیه، CSSOM و طرح‌بندی مستقل از آن هستند.

کدام انواع رویداد مدل‌سازی شده‌اند؟

خانوادهٔ استاندارد: UI، mouse، keyboard، focus، input، popstate، hashchange، error و رویدادهای سفارشی، همگی از طریق EventTarget ارسال می‌شوند.

آیا ذخیره‌سازی وب پایدار است؟

Storage سطح API را برای مقاصد پردازشی مدل‌سازی می‌کند؛ ماندگاری به عهدهٔ برنامهٔ جاسازی‌کننده است.


خلاصهٔ API Reference

کلاس/متدتوضیح
Windowلنگر محیط مرور
Locationوضعیت آدرس
Historyتاریخچه جلسه
EventTargetرابط ارسال رویداد
AbortControllerکنترل‌کننده لغو
IntersectionObserverمشاهده تقاطع
set_default_user_agentپیکربندی هویت Navigator

همچنین ببینید:

 فارسی