شیء Navigator در جاوا اسکریپت

08 اردیبهشت 1398
Advanced-Javascript-navigator-objects

شیء Navigator چیست؟

شیء 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>

مشاهده ی خروجی در JSBin

اگر کوکی های مرورگر شما فعال باشد در صفحه ی خروجی مقدار 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>

مشاهده ی خروجی در JSBin

هشدار: متاسفانه این دستور دیگر کار نمی کند و در هر مرورگری که باشد مقدار 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>

مشاهده ی خروجی در JSBin

این دستور نیز برای تمام مروگر ها مقدار 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>

مشاهده ی خروجی در JSBin

متاسفانه این دستور نیز دیگر قابل استفاده نیست و برای اکثر مرورگر ها مقدار 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>

مشاهده ی خروجی در JSBin

عامل کاربری مرورگر

عامل کاربری یا 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>

مشاهده ی خروجی در JSBin

هشدار: از آنجا که همیشه احتمال خطا در دستورات شیء 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>

مشاهده ی خروجی در JSBin

زبان مرورگر

خصوصیت 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>

مشاهده ی خروجی در JSBin

آنلاین بودن مرورگر

برای تشخیص آنلاین بودن یک مرورگر می توانیم از دستور 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>

مشاهده ی خروجی در JSBin

تشخیص فعال بودن جاوا

برای اینکه تشخیص دهیم زبان جاوا در مرورگری فعال است یا خیر می توانیم از دستور ()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>

مشاهده ی خروجی در JSBin

توجه داشته باشید که زبان جاوا با زبان جاوا اسکریپت تفاوت کلی دارند و دو زبان جداگانه هستند.

امیدوارم از این قسمت لذت برده باشید و برای استفاده از دستوراتی که در اینترنت می بینید دقت بیشتری به خرج دهید. ما لیستی از این دستورات را برای شما آوردیم تا بدانید این دستور ها چه هستند و از کدام یک نمی توان استفاده کرد.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری جاوا اسکریپت پیشرفته توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.