Hướng dẫn dùng window.navigator JavaScript

Trong bài này chúng ta sẽ tìm hiểu đối tượng Navigator trong Javascript, đây là đối tượng giúp bạn lấy được thông tin về trình duyệt mà người dùng đang sử dụng.

Hướng dẫn dùng window.navigator JavaScript

Hướng dẫn dùng window.navigator JavaScript

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Javascript navigator được dùng để kiểm tra các thông tin về người dùng như trình duyệt đang sư dụng là gì? hệ điều hành đang sử dụng là gì? Trình duyệt có bật cookie hay không? hay thậm chí có thể kiểm tra được tên và version của Browser.

Navigator là một thuộc tính của window, vì vậy bạn phải sử dụng cú pháp window.navigator để truy cập đến các thuộc tính của navigator. Sau đây là cách sử dụng đối tượng này. Ngoài ra, bạn cũng có thể sử dụng biến navigator, đây là một biến toàn cục đại diện cho window.navigator.

Bây giờ mình thử console.log đối tượng này xem có gì nhé.

Bài viết này được đăng tại [free tuts .net]

Chạy trên trình duyệt chrome thì kết quả sẽ như sau:

Trên chính là danh sách các phương thức và thuộc tính nằm trong đối tượng navigator. Bây giờ ta sẽ thực hành nhé.

Để kiểm tra trình duyệt có bật Cookie hay không thì ta sử dụng thuộc tính navigator.cookieEnabled.

if (window.cookieEnabled){
    alert("Có bật Cookie - freetuts.net");
}
else{
    alert("Cookie đã bị tắt");
}

2. Window navigator kiểm tra tên trình duyệt đang sử dụng

Để kiểm tra tên trình duyệt thì ta dùng thuộc tính navigator.appName và thuộc tính navigator.appCodeName dùng để kiểm tra tên mã code của trình duyệt.

document.write("App Name: " + window.navigator.appName + "
"); document.write("Code Name: " + window.navigator.appCodeName);

3. Window navigator kiểm tra Engine của trình duyệt

Để kiểm tra Engine của trình duyệt ta sử dụng thuộc tính navigator.product.

document.write("Engine: " + navigator.product);

4. Window navigator kiểm tra vesion của trình duyệt

Để kiểm tra Version của trình duyệt ta sử dụng thuộc tính navigator.appVersion hoặc navigator.userAgent.

document.write("Cách 1: " + navigator.appVersion + "
"); document.write("Cách 1: " + navigator.userAgent);

Tuy nhiên, việc sử dụng Javascript để kiểm tra Version sẽ có lúc kết quả trả về sai. Vì vậy, bạn không nên sử dụng nó để kiểm tra version của trình duyệt nếu muốn lấy kết quả chính xác.

5. Window navigator kiểm tra hệ điều hành của client

Javascript cũng có thể xem hệ điều hành mà người dùng đang sử dụng bằng cách sử dụng thuộc tính navigator.platform.

document.write("Hệ điều hành: " + navigator.platform);

6. Window navigator kiểm tra ngôn ngữ của trình duyệt

Mỗi trình duyệt có thể lựa chọn ngôn ngữ khác nhau và ta có thể kiểm tra bằng phương thức navigator.language.

document.write("Ngôn ngữ Browser: " + navigator.language);

Lời kết: Khi sử dụng đối tượng navigator bạn có thể lấy toàn bộ thông tin về trình duyệt và hệ điều hành của người dùng. Nếu bạn muốn lấy các thông tin đó lưu vào cơ sở dữ liệu thì hãy sử dụng Ajax nhé. Hoặc bạn có thể tạo một form ẩn, trong đó có các input hidden, và bạn sẽ dùng javascript để truyền dữ liệu vào các ô input đó, sau đó submit form.

Hướng dẫn dùng window.navigator JavaScript
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.

Hướng dẫn dùng window.navigator JavaScript
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới.
Hướng dẫn dùng window.navigator JavaScript
Facebook

1- window.navigator

Đối tượng window.navigator chứa các thông tin về trình duyệt của người dùng, chẳng hạn tên trình duyệt, phiên bản,.... Bạn có thể truy cập vào đối tượng navigator mà không cần sử dụng tiếp đầu ngữ window.

  • navigator.appName
  • navigator.appCodeName
  • navigator.platform
  • ...

2- navigator.product

navigator.product luôn trả về "Gecko" đối với tất cả trình duyệt.



var prodName = navigator.product; // Gecko

3- navigator.appName

navigator.appName trả về tên ứng dụng của trình duyệt. Nhưng thực tế nó không có nhiều ý nghĩa bởi vì hầu hết các trường hợp nó trả về "Netscape". Cụ thể với các trình duyệt khác nhau:

  • IE11+, Firefox, ChromeSafari trả về "Netscape".
  • IE 10 hoặc cũ hơn, trả về "Microsoft Internet Explorer".
  • Opera trả về "Opera".



var appName = navigator.appName;
 

4- navigator.appCodeName

navigator.appCodeName trả về tên mã của trình duyệt. Nhưng nó cũng không có nhiều ý nghĩa vì tất cả các trình duyệt đều trả về giá trị "Mozilla", nó ám chỉ rằng trình duyệt này tương thích với Mozilla.



var codeName = navigator.appCodeName; // Mozilla

5- navigator.appVersion

navigator.appVersion trả về thông tin phiên bản của trình duyệt.

appVersion-example.html




   
      Navigator appVersion
      
      
   
   

       

navigator.appVersion

Chạy ví dụ trên trên trình duyệt Chrome (Windows 7), và nhận được kết quả:

Hướng dẫn dùng window.navigator JavaScript

Chạy ví dụ trên trên trình duyệt Firefox (Windows 7) và nhận được kết quả:

Hướng dẫn dùng window.navigator JavaScript

6- navigator.platform

navigator.platform trả về tên của nền tảng (platform) mà trình duyệt được biên dịch (compiled), nó có thể trả về một chuỗi rỗng nếu trình duyệt từ chối hoặc không thể xác định được nền tảng. Các giá trị có thể là:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • Etc..

Hầu hết các trình duyệt, bao gồm Chrome, EdgeFirefox 63 trở lên khi chạy trên hệ điều hành Windows đều trả về "Win32" ngay cả khi nó chạy trên phiên bản Windows 64 bit, trong khi Internet Explorer và các phiên bản Firefox trước phiên bản 63 lại trả về "Win64".

7- navigator.cookieEnabled

navigator.cookieEnabled trả về true nếu trình duyệt đang bật (enable) Cookie, ngược lại trả về false.

Cấu hình trình duyệt Chrome để bật (turn on) hoặc tắt (turn off) Cookie:

Cấu hình trình duyệt Firefox để bật hoặc tắt Cookie:

Xem thêm:

8- navigator.geolocation

navigator.geolocation trả về một đối tượng Geolocation, chứa các thông tin vị trí của người dùng như kinh độ (longitude), vĩ độ (latitude),... . Điều này cho phép một website hoặc ứng dụng cung cấp kết quả tùy chỉnh dựa trên vị trí của người dùng.

Lưu ý: Vì lý do bảo mật, khi một website cố gắng truy cập thông tin vị trí, người dùng sẽ được thông báo và yêu cầu cấp quyền. Lưu ý rằng mỗi trình duyệt có chính sách và phương thức riêng để yêu cầu quyền này.

Hướng dẫn dùng window.navigator JavaScript

Hướng dẫn dùng window.navigator JavaScript

Ví dụ:

geolocation-example.js


// Success Handler
function successHandler(position)  {
  var logArea = document.getElementById("log-area");

  logArea.value = "";
  logArea.value += "Latitude: " + position.coords.latitude + "\n";
  logArea.value += "Longitude: " + position.coords.longitude + "\n";
}

// Error Handler
function errorHandler(positionError)  {
   if(positionError.code == PositionError.PERMISSION_DENIED) {
       alert("Error: Permission Denied!");
   } else if(positionError.code == PositionError.POSITION_UNAVAILABLE) {
       alert("Error: Position Unavailable!");
   } else if(positionError.code == PositionError.TIMEOUT) {
       alert("Error: Timeout!");
   }
}

function showInfos()  {
  navigator.geolocation.getCurrentPosition(successHandler, errorHandler);
}

 

geolocation-example.html




   
      Navigator geolocation
      
      

      
   
   

       

navigator.geolocation

Geolocation là một API khá lớn, vì vậy nó cần được giới thiệu trong một bài viết riêng biệt, nếu quan tâm bạn có thể xem thêm bài viết dưới đây:

9- navigator.language

navigator.language trả về một chuỗi đại diện cho ngôn ngữ ưa thích của người dùng, còn được gọi là ngôn ngữ "giao diện người dùng trình duyệt" (Browser UI).



var lang = navigator.language
 

Các giá trị có thể là "en", "en-US", "fr", "fr-FR", "es-ES", ... Chú ý trình duyệt Safari trên MacOSiOS trước phiên bản 10.2, country code là chữ thường (lowercase) "en-us", "fr-fr", "es-es", ...

10- navigator.onLine

navigator.onLine trả về trạng thái trực tuyến của trình duyệt. Trả về true nghĩa là trình duyệt đang trực tuyến, ngược lại trả về false. Giá trị của nó được cập nhập khi người dùng truy cập vào một liên kết hoặc có một yêu cầu được gửi đến máy chủ bởi JavaScript.



var online = navigator.onLine;

Các trình duyệt khác nhau có thể hơi khác nhau về khái niệm trực tuyến.

Trong ChromeSafari, nếu trình duyệt không thể kết nối với mạng cục bộ (LAN) hoặc bộ định tuyến (Router), thì nó sẽ ngoại tuyến, ngược lại được coi là trực tuyến. Điều này có nghĩa là bạn nhận được giá trị true không có nghĩa là bạn có thể truy cập Internet.

Có một vài tình huống khiến bạn đưa ra phán đoán sai lầm. Chẳng hạn, máy tính của bạn cài đặt một mạng ảo (Virtual Network). Nếu mạng ảo này luôn luôn được kết nối (connected), navigator.onLine sẽ trả về giá trị true. Do đó nếu bạn thực sự muốn xác định trạng thái trực tuyến của trình duyệt bạn cần phát triển các phương tiện bổ xung để kiểm tra. Để tìm hiểu thêm bạn có thể tham khảo bài viết dưới đây:

Trong Firefox (version <= 41), Internet Explorer nếu bạn chuyển chế độ của trình duyệt sang trạng thái ngoại tuyến, navigator.onLine trả về giá trị false, ngược lại luôn trả về true. Với Firefox (version > 41) hành vi đã giống với ChromeSafari.

Bạn có thể thấy những thay đổi trong trạng thái mạng bằng cách lắng nghe các sự kiện trên window.ononlinewindow.onoffline.

onLine-example.html




   
      Navigator onLine
      

      

      

   
   

       

navigator.onLine

11- navigator.userAgent

Mỗi khi trình duyệt gửi một yêu cầu đến máy chủ nó đều đính kèm một mẩu thông tin trên Header đó là user-agent (Tác nhân người dùng). User Agent cung cấp cho máy chủ một thông tin ngắn gọn về trình duyệt và hệ điều hành của người dùng.



var userAgent = navigator.userAgent;

Cấu trúc chung của chuỗi User Agent:

appCodeName/appVersion number (Platform; Security; OS-or-CPU; 
Localization; rv: revision-version-number) product/productSub 
Application-Name Application-Name-version

Ví dụ, đây là chuỗi User Agent được gửi tới máy chủ từ trình duyệt Firefox đang chạy trên hệ điều hành Windows 7:

Firefox/Windows 7


Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0

Chuỗi User Agent của trình duyệt Internet Explorer 9 chạy trên hệ điều hành Windows 7:

IE9/Windows 7


Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

Chuỗi User Agent của trình duyệt Chrome chạy trên hệ điều hành Windows 7:

Chrome/Windows 7


Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

Bạn cũng có thể truy cập địa chỉ dưới đây, nó để xem User Agent trình duyệt của bạn:

Hướng dẫn dùng window.navigator JavaScript

Nhận dạng trình duyệt dựa trên việc phát hiện chuỗi User Agent là không đáng tin cậy và không được khuyến khích, vì người dùng có thể tùy biến nó. Ví dụ:

  • Đối với trình duyệt Firefox, bạn có thể tùy biến User Agent bằng cách sửa đối general.useragent.override trong about:config.
  • Với Opera 6+ bạn có thể sét đặt chuỗi định danh của trình duyệt (browser identification string) thông qua Menu.
  • Với Internet Explorer bạn có thể thay đổi User Agent thông qua Windows Registry.
  • ....

Sử dụng JavaScript bạn cũng có thể tùy biến User Agent được gửi đến máy chủ.

JavaScript



navigator.__defineGetter__('userAgent', function() {
    return "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0)"
});

jQuery


$.ajaxSetup({
    beforeSend: function(request) {
        request.setRequestHeader("User-Agent",
             "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0)");
    }
});

12- navigator.javaEnabled()

navigator.javaEnabled() trả về giá trị true nghĩa là trình duyệt này đang bật cho phép các ứng dụng Java hoạt động, chẳng hạn như Java Applet. Bạn có thể bật (enable) hoặc vô hiệu (disable) nó thông qua tùy chọn của trình duyệt.

Về cơ bản khi trình duyệt phát hiện một ứng dụng Java chuẩn bị được chạy, nó sẽ yêu cầu sự cho phép từ người dùng.

Hướng dẫn dùng window.navigator JavaScript