كائن navigator في JavaScript هو كائن مدمج يوفر معلومات حول متصفح المستخدم وبيئته. يُمكنك استخدامه للحصول على تفاصيل مثل اسم المتصفح وإصداره ونظام التشغيل واللغة المدعومة وغيرها. هذا يُفيد في تخصيص تجربة المستخدم أو التعامل مع اختلافات المتصفحات.

خصائص كائن navigator:

يحتوي كائن navigator على العديد من الخصائص، ولكن بعضها أصبح قديمًا أو غير موثوق به بسبب التغيرات في معايير الويب. إليك أهم الخصائص التي لا تزال تُستخدم بشكل شائع:

  • navigator.userAgent: يُرجع سلسلة نصية تُمثل هوية المستخدم (User Agent). هذه السلسلة تحتوي على معلومات كثيرة عن المتصفح ونظام التشغيل، ولكن تحليلها قد يكون معقدًا بسبب اختلاف تنسيقاتها بين المتصفحات. يُفضل تجنب الاعتماد عليها بشكل كبير قدر الإمكان واستخدام خصائص أكثر تحديدًا إذا كانت متوفرة.
  • navigator.appName: يُرجع اسم المتصفح (مثل "Netscape" أو "Microsoft Internet Explorer"). هذه الخاصية قديمة جدًا ونادرًا ما تُستخدم الآن.
  • navigator.appVersion: يُرجع معلومات حول إصدار المتصفح. هذه الخاصية أيضًا قديمة وغير موثوقة.
  • navigator.platform: يُرجع معلومات حول نظام التشغيل (مثل "Win32" أو "MacIntel" أو "Linux x86_64").
  • navigator.language: يُرجع لغة المستخدم المفضلة.
  • navigator.languages: يُرجع مصفوفة بلغات المستخدم المفضلة. هذه الخاصية أكثر دقة من navigator.language حيث تُمكن المستخدم من تحديد أكثر من لغة مفضلة.
  • navigator.onLine: يُرجع قيمة منطقية تُشير إلى ما إذا كان المتصفح متصلاً بالإنترنت (true) أو غير متصل (false).
  • navigator.cookieEnabled: يُرجع قيمة منطقية تُشير إلى ما إذا كانت ملفات تعريف الارتباط (Cookies) مُفعلة في المتصفح (true) أو لا (false).
  • navigator.geolocation: يُوفر واجهة برمجة تطبيقات لتحديد الموقع الجغرافي للمستخدم.
  • navigator.mediaDevices: يُوفر واجهة برمجة تطبيقات للوصول إلى أجهزة الوسائط المتعددة، مثل الكاميرا والميكروفون.

أمثلة على استخدام navigator:

JavaScript
// الحصول على اسم المتصفح (طريقة قديمة وغير موثوقة)
console.log("اسم المتصفح: " + navigator.appName);

// الحصول على معلومات نظام التشغيل
console.log("نظام التشغيل: " + navigator.platform);

// الحصول على لغة المستخدم المفضلة
console.log("لغة المستخدم: " + navigator.language);
//أو للحصول على مصفوفة اللغات المفضلة
console.log("اللغات المفضلة: " + navigator.languages);

// التحقق من الاتصال بالإنترنت
if (navigator.onLine) {
console.log("المتصفح متصل بالإنترنت.");
} else {
console.log("المتصفح غير متصل بالإنترنت.");
}

//التحقق من تفعيل الكوكيز
if (navigator.cookieEnabled) {
console.log("الكوكيز مفعلة.");
} else {
console.log("الكوكيز غير مفعلة.");
}

//استخدام تحديد الموقع الجغرافي (يتطلب إذن المستخدم)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
console.log("تحديد الموقع الجغرافي غير مدعوم من قبل هذا المتصفح.");
}

function showPosition(position) {
console.log("خط العرض: " + position.coords.latitude +
"<br>خط الطول: " + position.coords.longitude);
}

ملاحظات مهمة:

  • navigator.userAgent: كما ذكرتُ سابقًا، تحليل userAgent معقد ويُفضل تجنبه. هناك مكتبات خارجية تُساعد في تحليلها إذا كنت مُضطرًا لاستخدامها، ولكن من الأفضل استخدام خصائص أكثر تحديدًا.
  • الخصوصية: يجب التعامل مع بيانات المستخدم بحذر واحترام الخصوصية. يجب طلب إذن المستخدم قبل استخدام بعض الخصائص، مثل navigator.geolocation.
  • التوافقية: تأكد من اختبار الكود الخاص بك على مختلف المتصفحات للتأكد من توافقيته.

باختصار، كائن navigator يُوفر معلومات قيّمة عن متصفح المستخدم، ولكن يجب استخدامه بحذر مع مراعاة التغيرات في معايير الويب وقضايا الخصوصية. استخدام الخصائص الأكثر تحديدًا بدلاً من الاعتماد على userAgent يُعتبر ممارسة أفضل.