شیء window.navigator
در جاوا اسکریپت اطلاعاتی در رابطه با مرورگر کاربر را در اختیار دارد. شما می توانید این شیء را بدون پیشوند window نیز بنویسید. برخی از دستوراتی که از این شیء مشتق می شوند عبارت اند از:
navigator.appName
navigator.appCodeName
navigator.platform
ما در این قسمت می خواهیم این شیء و دستوراتش را به طور کامل بررسی کنیم اما باید نکته ای را بدانید: دستوراتی که در این قسمت بررسی و توضیح داده می شوند دارای اشکالات فراوانی هستند. توصیه ی اکید تمام برنامه نویسان با تجربه این است که هیچ گاه از این دستورات استفاده نکنید.
سوال: اگر این دستورات آن چنان دارای اشکال هستند که نباید از آن ها استفاده کنیم، دلیل توضیح آن ها چیست؟
پاسخ: برای دوری و دفع خطر، باید آن را شناخت! شما باید این دستورات را بشناسید تا هم به عنوان یک برنامه نویس حرفه ای از چیزی جا نمانید و هم بتوانید عوامل مختلف مشکل زا را شناسایی کنید و در دام آن ها نیفتید.
اگر کوکی های مرورگر کاربر فعال باشند، دستور cookieEnabled
مقدار true و در غیر این صورت مقدار false را برمی گرداند:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The cookieEnabled property returns true if cookies are enabled:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.cookieEnabled is " + navigator.cookieEnabled; </script> </body> </html>
اگر کوکی های مرورگر شما فعال باشد در صفحه ی خروجی مقدار true را مشاهده خواهید کرد.
دستور appName
قرار است نام برنامه ای که کاربر از آن مرورگر استفاده می کند را به ما بدهد:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The appName property returns the application name of the browser:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.appName is " + navigator.appName; </script> </body> </html>
هشدار: متاسفانه این دستور دیگر کار نمی کند و در هر مرورگری که باشد مقدار Netscape را برمیگرداند که صحیح نیست. بنابراین به هیچ عنوان از این ویژگی برای تشخیص مرورگر کاربر استفاده نکنید. این مطلب تنها جهت آشنایی شما با این دستور میباشد و هیچ ارزش عملی ندارد.
همین اتفاق به شکل دیگری برای دستور appCodeName
تکرار می شود:
<!DOCTYPE html> <html> <body> <h2>JavaScript Navigator</h2> <p>The appCodeName property returns the code name of the browser.</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.appCodeName is " + navigator.appCodeName; </script> </body> </html>
این دستور نیز برای تمام مروگر ها مقدار Mozilla را برمیگرداند و هیچ استفاده ای ندارد.
خصوصیت product
نیز قرار بود که نوع موتور مرورگر را برگرداند:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The product property returns the product name of the browser.</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.product is " + navigator.product; </script> </body> </html>
متاسفانه این دستور نیز دیگر قابل استفاده نیست و برای اکثر مرورگر ها مقدار Gecko را برمیگرداند.
خوشبختانه دستور appVersion
به طور صحیح کار می کند و اطلاعاتی را در رابطه با نسخه ی مرورگر کاربر در اختیار شما می گذارد:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The appVersion property returns version information about the browser:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = navigator.appVersion; </script> </body> </html>
عامل کاربری یا userAgent
دستوری است که header ارسال شده توسط سرور به مرورگر را مشخص می کند:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The userAgent property returns the user-agent header sent by the browser to the server:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = navigator.userAgent; </script> </body> </html>
هشدار: از آنجا که همیشه احتمال خطا در دستورات شیء navigator وجود دارد توصیه ی اکید می شود که هیچ وقت از دستورات آن برای تشخیص و دریافت اطلاعات از مرورگر کاربران استفاده نکنید و از روش های جایگزین آن بهره ببرید. به طور مثال اگر سیستم عاملی پس از مرورگری معرفی شده و به بازار آمده باشد، آن مرورگر نمی تواند سیستم عامل مذکور را تشخیص دهد و هزاران مشکل دیگر. توجه داشته باشید که دستورات زیر ممکن است برای افراد مختلف کار نکنند و با مشکل مواجه شوید.
منظور از پلتفرم (دستور platform
) مرورگر همان سیستم عاملی است که کاربر از آن استفاده می کند:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The platform property returns the browser platform (operating system):</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.platform is " + navigator.platform; </script> </body> </html>
خصوصیت language
زبان مرورگر یک کاربر را به شما برمیگرداند:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The language property returns the browser's language:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.language is " + navigator.language; </script> </body> </html>
برای تشخیص آنلاین بودن یک مرورگر می توانیم از دستور onLine
استفاده کنیم:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The onLine property returns true if the browser is online:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "navigator.onLine is " + navigator.onLine; </script> </body> </html>
برای اینکه تشخیص دهیم زبان جاوا در مرورگری فعال است یا خیر می توانیم از دستور ()javaEnabled
استفاده کنیم:
<!DOCTYPE html> <html> <body> <h2>The Navigator Object</h2> <p>The javaEnabled() method returns true if Java is enabled:</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "javaEnabled is " + navigator.javaEnabled(); </script> </body> </html>
توجه داشته باشید که زبان جاوا با زبان جاوا اسکریپت تفاوت کلی دارند و دو زبان جداگانه هستند.
امیدوارم از این قسمت لذت برده باشید و برای استفاده از دستوراتی که در اینترنت می بینید دقت بیشتری به خرج دهید. ما لیستی از این دستورات را برای شما آوردیم تا بدانید این دستور ها چه هستند و از کدام یک نمی توان استفاده کرد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.