Bosh sahifa Wiki Browser Object Model

Browser Object Model

Browser Object Model (BOM) — veb-sahifada ishlayotgan JavaScript’ga brauzer oynasi va uning muhiti bilan ishlash imkonini beradigan obyektlar to‘plami. Uning markazida window global obyekti turadi; manzil, tarix, ekran, navigator, timer va dialog funksiyalari shu muhit orqali taqdim etiladi. BOM rasmiy yagona daraxt modeli emas va u hujjat tarkibini ifodalovchi DOM’dan farq qiladi.

Asosiy obyektlar

window.location joriy URL qismlarini o‘qish va navigatsiyani boshlash imkonini beradi. history sessiya tarixida oldinga-orqaga yuradi va Single-Page Application’larda URL’ni sahifani to‘liq qayta yuklamasdan yangilaydi. navigator brauzer imkoniyatlari, til, online holati va ayrim qurilma API’lariga kirish nuqtasidir. User-agent satriga tayangan aniqlash ishonchsiz; feature detection afzal.

screen fizik yoki mantiqiy ekran o‘lchami haqida ma’lumot beradi, innerWidth va innerHeight esa viewport’ni bildiradi. Responsive interfeys uchun JavaScript o‘lchovidan ko‘ra CSS media query ko‘pincha mosroq. setTimeout va setInterval callback’ni belgilangan vaqtdan keyin navbatga qo‘yadi, ammo aynan shu millisekundda bajarilishini kafolatlamaydi.

Oyna va navigatsiya

window.open() yangi tab yoki oyna ochishi mumkin. Brauzerlar foydalanuvchi harakatiga bevosita bog‘lanmagan chaqiruvlarni pop-up sifatida bloklaydi. Ochilgan oyna opener orqali manba oynaga havola olishi mumkin; tashqi sahifa ochilganda noopener qo‘llash tabnabbing xavfini kamaytiradi.

History API’da pushState yangi yozuv qo‘shadi, replaceState joriy yozuvni almashtiradi. popstate hodisasi foydalanuvchi tarix bo‘ylab yurganda routerga holatni tiklash imkonini beradi. Server ham SPA ichki URL’larini boshlang‘ich HTML’ga yo‘naltirmasa, sahifani to‘g‘ridan-to‘g‘ri ochish 404 xatosi berishi mumkin.

Hodisalar va imkoniyatlar

resize, online, offline, hashchange va beforeunload kabi window hodisalari muhitdagi o‘zgarishni bildiradi. beforeunload dialog matnini erkin sozlash zamonaviy brauzerlarda cheklangan; u doim ishlamasligi sabab saqlash strategiyasining yagona tayanchi bo‘la olmaydi. Visibility API tab fon holatiga o‘tganda keraksiz ishni kamaytirishga yordam beradi.

Clipboard, Geolocation, Notifications va MediaDevices kabi imkoniyatlar tarixan BOM bilan birga tilga olinadi, lekin amalda ular alohida Web API spetsifikatsiyalariga tegishli. Ko‘pi secure context, foydalanuvchi ruxsati va permissions policy talab qiladi. Mavjudlik brauzer, qurilma va foydalanuvchi sozlamasiga qarab o‘zgaradi.

Xavfsizlik chegaralari

Same-origin policy skriptning boshqa origin oynasi mazmunini o‘qishini cheklaydi. Turli origin oynalar postMessage orqali aniq protokol asosida aloqa qiladi. Qabul qiluvchi event.origin va xabar sxemasini tekshirishi kerak; * manzilidan ehtiyotsiz foydalanish ma’lumot sizishiga olib keladi.

URL query, fragment, window nomi va tashqi xabarlar ishonchsiz kirishdir. Ularni DOM’ga qo‘yishdan oldin kontekstga mos kodlash zarur. BOM API’lari brauzerga bog‘liq bo‘lgani uchun server-side rendering muhitida window mavjud emas; kod faqat client bosqichida bajarilishi yoki capability tekshirishi kerak.

Resurs va maxfiylik cheklovlari

Brauzer fon tabidagi timerlarni sekinlashtirishi yoki butunlay muzlatishi mumkin. Shu sabab setInterval yordamida aniq vaqt hisoblash o‘rniga real timestamp farqi olinadi. Page Lifecycle hodisalari vaqtincha to‘xtash va qayta tiklanishni boshqarishga yordam beradi. Mobil brauzer memory bosimida sahifani ogohlantirmasdan yopishi mumkin; muhim draft va holat davriy saqlanadi.

BOM orqali olinadigan ekran, til, timezone va qurilma xususiyatlari birga qo‘shilganda fingerprint yaratishi mumkin. Faqat funksional zaruratdagi qiymatlar yig‘iladi, analytics’da retention cheklanadi va foydalanuvchi roziligi talab qilinadigan hududlar hisobga olinadi. API mavjudligi uni cheksiz kuzatuv uchun ishlatish mumkinligini anglatmaydi.

Bog‘liq tushunchalar

Document Object Model, Window, Web API, History API, Same-origin policy, JavaScript, Browser