ما هو BOM في لغة JavaScript


ما هو BOM في لغة JavaScript؟

مرحباً يا رفاق! اليوم راح نتكلم عن شي مهم جداً في عالم جافاسكريبت وهو BOM. لا تخاف، الموضوع بسيط ومباشر.

وش يعني BOM؟

اختصار BOM يعني Browser Object Model (نموذج كائن المتصفح). ببساطة، هو مجموعة من الكائنات اللي بتسمح لجافاسكريبت تتفاعل مع المتصفح نفسه. تخيل إن المتصفح عنده "أبواب" و"نوافذ" و"أزرار" خاصة فيه، الـ BOM هو المفتاح اللي يخليك تتحكم فيها. أهم شي تعرفه إن الـ window object هو الكائن الأب لكل كائنات الـ BOM.

ملاحظة سريعة: الـ BOM مش جزء قياسي من W3C (مثل الـ DOM)، يعني ممكن تلاقي اختلافات بسيطة في كيفية تطبيق المتصفحات له، لكن الكائنات الأساسية موجودة في كل مكان.

أهم كائنات الـ BOM

1. كائن window

هذا هو الملك! window هو الكائن العام (Global Object) في المتصفح. كل المتغيرات والدوال اللي تعرفها في نطاق عام بتصير جزء من الكائن window. هو يمثل نافذة المتصفح المفتوحة.

تقدر تستخدمه لـ:

  • فتح نوافذ جديدة: window.open()
  • إغلاق نوافذ: window.close()
  • عرض تنبيهات: window.alert()
  • تحديد وقت لتنفيذ كود: window.setTimeout() و window.setInterval()

مثال:

window.alert("مرحباً من نافذة المتصفح!");
let userName = window.prompt("ما اسمك؟");
console.log("الاسم هو: " + userName);

2. كائن navigator

هذا الكائن يعطيك معلومات عن المتصفح اللي المستخدم قاعد يستخدمه.

مثال:

console.log("اسم المتصفح: " + navigator.appName); // قد يكون قديم، الأفضل استخدام userAgent
console.log("إصدار المتصفح: " + navigator.appVersion);
console.log("نظام التشغيل: " + navigator.platform);
console.log("وكيل المستخدم (User Agent): " + navigator.userAgent);

3. كائن screen

يعطيك معلومات عن شاشة المستخدم، مثل الأبعاد والعرض المتاح.

مثال:

console.log("عرض الشاشة بالبكسل: " + screen.width);
console.log("ارتفاع الشاشة بالبكسل: " + screen.height);
console.log("العرض المتاح (بدون شريط المهام): " + screen.availWidth);
console.log("الارتفاع المتاح (بدون شريط المهام): " + screen.availHeight);

4. كائن location

هذا الكائن يخليك تتعامل مع عنوان URL الحالي للصفحة.

تقدر تستخدمه لـ:

  • الحصول على الـ URL الحالي: location.href
  • تغيير الـ URL (الانتقال لصفحة أخرى): location.href = "https://www.example.com"
  • إعادة تحميل الصفحة: location.reload()

مثال:

console.log("الـ URL الحالي: " + location.href);
console.log("اسم المضيف (Host): " + location.hostname);
console.log("المسار (Path): " + location.pathname);

// للانتقال لصفحة أخرى (اذا حبيت تجربها، حطها في زر مثلاً)
// location.href = "https://www.google.com";

5. كائن history

يسمح لك بالتعامل مع سجل تصفح المستخدم (الصفحات اللي زارها في نفس التبويب).

تقدر تستخدمه لـ:

  • الرجوع للصفحة السابقة: history.back()
  • التقدم للصفحة التالية: history.forward()
  • الانتقال لعدد معين من الصفحات: history.go(-2) (للوراء صفحتين)

مثال:

console.log("عدد الصفحات في السجل: " + history.length);
// history.back(); // يرجع صفحة للخلف
// history.forward(); // يتقدم صفحة للأمام

الفرق بين BOM و DOM (مهم جداً!)

كثير يلخبطون بينهم، بس الموضوع بسيط:

  • DOM (Document Object Model): يتعامل مع محتوى الصفحة (عناصر HTML، النصوص، الصور). هو تمثيل هيكلي للصفحة تقدر تعدل عليه. الكائن الأساسي فيه هو document.
  • BOM (Browser Object Model): يتعامل مع المتصفح نفسه (النافذة، السجل، الشاشة، الـ URL). هو الكائن الأب لـ DOM، يعني window يحتوي على document.

تذكر: window هو الكائن الأب للكل. window.document هو اللي يعطيك الـ DOM.

خلاصة القول

الـ BOM يعطيك القوة للتحكم في بيئة المتصفح، من معلومات الشاشة لعنوان الـ URL وسجل التصفح. فهمك له بيساعدك تبني تطبيقات ويب تفاعلية أكثر وتستفيد من قدرات المتصفح بشكل كامل. استمر في التجربة والممارسة، وراح تشوف كيف الموضوع سهل وممتع!