أوامر معرفة نظام الزائر Navigator.userAgent جافاسكربت
كشف نظام التشغيل على جهاز الزائر detect operating system on the client machine.
تحديد الأوامر التي نرغب بأن يتم تنفيذها على الأنظمة "الهواتف أو الكمبيوتر أو نظام تشغيل محدد" . الذي نقوم بتحديده بأنفسنا من خلال الكود مثل 'نظام أندرويد, ويندوز, آيفون, لينكس....الخ'.
تُمثّل واجهة المستكشف الدولة و هوية وكيل المستخدم مثل نوع النظام و إصداره و بعض البيانات.
تقوم خاصية UserAgent بإرجاع بيانات وكيل المستخدم المرسلة بواسطة المتصفح إلى الخادم.
و تحتوي القيمة التي تم إرجاعها على معلومات حول إسم المتصفح و الإصدار والنظام الأساسي.
أمثلة عملية على إستخدام Navigator-userAgent
نقوم بفتح ملف html نكتب به العناصر التي نُريد أن يتم تنفيذ الأوامر عليها, مثال سوف نستخدم الوسم h2 و نقوم بكتابة إسم موقعنا ضمن الوسم.
<body>
<h2>Programmer Tech website</h2>
</body>
سوف نقوم بتجريب الأكواد بشكل مباشر من متصفح جوجل كروم, و يكون بالدخول لوضع المطورين به.
نضغط في الزر اليمين في الماوس على أي مكان فارغ من الشاشة و الذهاب إلى خيار فحص العنصر أو Inspect ثم console و الضغط على إشارة الأجهزة.
نقوم بكتابة الأمر navigator.userAgent ثم نضغط على Enter و نرى نتيجة تعلُّمنا ببيانات الحاسوب الخاص بي و المتصفح كما يلي
كما لآحظنا لقد أعطانا بيانات المتصفح الخاص بي و النظام و بعض البيانات الأخرى, نقوم بالتبديل من الخيارات بأن جهازنا هو Galaxy S5 و نرى ما النتيجة التي سوف ترجع لنا.
سوف نقوم حالياً بتبديل نوع الجهاز على سبيل المثال إلى آيفون و نرى نتيجته
نُلاحظ بأن نوع الجهاز هو iPhone و نظامه OS و إصداره 12 و نوعه ماك و المتصفح هو Safari و بعض البيانات الأخرى.
لقد تعلَّمنا أنهُ من خلال العنصر أو الأمر navigator.userAgent يُمكننا أن نقوم بتحديد نوع النظام المُستخدَم و نوع المتصفح لدى الزائر.
و أهم شيئ هو النظام المستخدم, فعلى سبيل المثال نرغَب في تنفيذ الأوامر على جميع الأجهزة التي يكون نظامها أندرويد أثناء زيارة الموقع الخاص بنا.
قبل كل شيئ كما نُلاحظ في الصور السابقة أنه عندما يقوم بعرض البيانات لنا يعرضها بالأحرف الكبيرة و الصغيرة.
و يفضَّل أن تكون البيانات بالأحرف الصغيرة و نستخدم لهذا الغَرَض الميثود toLowerCase() بعد أمر معرفة معلومات النظام المستخدم navigator.userAgent.
نُلاحظ بأن جميع النتائج قد تم إرجاعها لنا بالأحرف الصغيرة لأننا إستخدمنا العنصر toLowerCase() في أثناء تنفيذ الأمر.
تنفيذ أوامر navigator.userAgent إذا كان النظام android
لنقم الآن بفتح محرر الأكواد و نقوم بالتمرن على ما سبق من خلال المحرر, نفتح ملف الجافاسكربت و نكتب به
var deviceSystem = navigator.userAgent.toLowerCase();
if(deviceSystem.includes("android")){
alert("أنا مستخدم أندرويد");
}
أنشأنا متغير بإسم deviceSystem و كان يساوي القيمة أو يخزن به القيمة navigator.userAgent.toLowerCase.
ثم وضعنا جملة شرطية if و قٌمنا بتحديد المٌتغير ثم قٌلنا في حال كان المتغير السابق التي تم تخزين البيانات به . هو من نوع أندرويد قم بتنفيذ أمر alert مُنبثق يُعلِمُنا بكلمة أنا مُستخدم أندرويد و عند تنفيذ الكود ستكون النتيجة.
بهذه الطريقة يتم تحديد الأوامر التي نٌريد تنفيذها على جميع أنواع هواتف الأندرويد فقط.
تنفيذ أوامر navigator.userAgent إذا كان النظام iphone
إذا كُنا نُريد أيضاً تحديد أوامر لجميع هواتف آيفون iphone نقوم بوضع شرط آخر و تحديد الأجهزة التي تنتجها آبل iphone و ipad و ipod لأن آيفون لديها العديد من النسخ.
var deviceSystem = navigator.userAgent.toLowerCase();
if(deviceSystem.includes("android")){
alert("أنا مستخدم أندرويد");
}else if(deviceSystem.includes("iphone") || deviceSystem.includes("ipad")
|| deviceSystem.includes("ipod")){
alert("أنا مستخدم ايفون");
}
لقد قُمنا بوضع شرط آخر عن المثال السابق و هو لتنفيذ الأوامر على أجهزة iphon.
و لأن آيفون لها أجهزة متعددة و ضعنا إشارة أو و هي || ثم إخترنا النوع ipad ثم النوع ipod.
و وضعنا أمر الظهور على الشاشة عبر alert يكتُب لنا أنا مُستخدم آيفون و عند تشغيل هذا الكود سنجد النتيجة.
تنفيذ أوامر navigator.userAgent على نظام محدد
يمكن أيضاً إستهداف أجهزة محددة من نوع أندرويد على سبيل المثال فقط الأجهزة التي أنظمتها هي لوليبوب 5.0 يتم هذا بوضع رقم إصدار النظام بعد إسم النظام.
var deviceSystem = navigator.userAgent.toLowerCase();
if(deviceSystem.includes("android")&&deviceSystem.includes("5.0") ) {
alert("أنا مستخدم أندرويد");
في الكود السابق قُمنا بتحديد الأوامر فقط على أجهزة أندرويد التي تحتوي على النظام لوليبوب و رقم إصداره 5.0.
تنفيذ أوامر navigator.userAgent على نظام ويندوز
لنطور الكود السابق أكثر و جعل تنفيذ الأوامر تتم على إصدارات ويندوز أيضاً و تحديد مثلاً فقط النواة 64 بت منها.
var deviceSystem = navigator.userAgent.toLowerCase();
if(deviceSystem.includes("android")&&deviceSystem.includes("5.0") ) {
alert("أنا مستخدم أندرويد");
}else if(deviceSystem.includes("iphone") || deviceSystem.includes("ipad")
|| deviceSystem.includes("ipod")){
alert("أنا مستخدم ايفون");
}
if(deviceSystem.includes("windows") && deviceSystem.includes("win64")){
alert("أنا مستخدم ويندوز");
}
هنا قُمنا بوضع شرط آخر على المثال السابق في الكود و هو في حال كان النظام ويندوز يظهَر للمستخدم أن نظامهُ ويندوز.
و وضعنا إشارة && ثم إخترنا فقط الأجهزة التي نواتها هي 64 بت يتم تنفيذ الأوامر عليها أما النواة 32 لا يتم تنفيذ شيئ عليها.
و نستطيع أيضا تنفيذ الأوامر مثلاً على أنظمة محددة من ويندوز مثلاً فقط ويندوز 10 أو ويندوز 8 أو 7 ....الخ.