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. Show
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 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é. 1. Kiểm tra Cookie có được bật không?Để kiểm tra trình duyệt có bật Cookie hay không thì ta sử dụng thuộc tính 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 document.write("App Name: " + window.navigator.appName + " 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 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 document.write("Cách 1: " + navigator.appVersion + " 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 clientJavascript
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 document.write("Hệ điều hành: " + navigator.platform); 6. Window navigator kiểm tra ngôn ngữ của trình duyệtMỗ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 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. 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. 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.
2- navigator.productnavigator.product luôn trả về "Gecko" đối với tất cả trình duyệt.
3- navigator.appNamenavigator.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:
4- navigator.appCodeNamenavigator.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.
5- navigator.appVersionnavigator.appVersion trả về thông tin phiên bản của trình duyệt. appVersion-example.html
Chạy ví dụ trên trên trình duyệt Chrome (Windows 7), và nhận được kết quả: Chạy ví dụ trên trên trình duyệt Firefox (Windows 7) và nhận được kết quả: 6- navigator.platformnavigator.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à:
Hầu hết các trình duyệt, bao gồm Chrome, Edge và Firefox 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.cookieEnablednavigator.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:
8- navigator.geolocationnavigator.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. Ví dụ: geolocation-example.js
geolocation-example.html
9- navigator.languagenavigator.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).
Các giá trị có thể là "en", "en-US", "fr", "fr-FR", "es-ES", ... Chú ý trình duyệt Safari trên MacOS và iOS trước phiên bản 10.2, country code là chữ thường (lowercase) "en-us", "fr-fr", "es-es", ... 10- navigator.onLinenavigator.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.
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 Chrome và Safari, 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 Chrome và Safari. 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.ononline và window.onoffline. onLine-example.html
11- navigator.userAgentMỗ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.
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
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
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
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: 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ụ:
Sử dụng JavaScript bạn cũng có thể tùy biến User Agent được gửi đến máy chủ. JavaScript
jQuery
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. |