JavaScript Navigator
Navigator 对象是 window 的一个只读属性,保存着浏览器的名称、版本、内核、操作系统、语言等信息。网页常用它来判断"访问者用的是哪种浏览器、什么设备",再做兼容处理或页面适配。它由浏览器自动创建,我们直接使用即可。
Navigator 是什么
navigator 是 window 的内置属性,无须 new,直接书写即可访问:
// 在浏览器控制台运行
console.log(window.navigator === navigator); // 输出:true
console.log(typeof navigator); // 输出:object
常用属性一览
| 属性 | 说明 | 典型值(因浏览器而异) |
|---|---|---|
| appName | 浏览器名称 | Netscape |
| appCodeName | 浏览器代码名 | Mozilla |
| userAgent | 完整的用户代理字符串 | Mozilla/5.0 (Windows NT 10.0; ...) |
| platform | 操作系统平台 | Win32 |
| language | 首选语言 | zh-CN |
| cookieEnabled | 是否启用 Cookie | true |
| onLine | 是否联网 | true |
检测浏览器与平台
最常见的做法是读取 userAgent 字符串并做判断:
var ua = navigator.userAgent;
console.log(ua); // 输出:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...
if (ua.indexOf('Chrome') > -1) {
console.log('这是 Chrome 内核浏览器'); // 输出:这是 Chrome 内核浏览器
}
if (/Android|iPhone|iPad/i.test(ua)) {
console.log('正在使用移动设备'); // 在手机浏览器中输出:正在使用移动设备
}
在线状态与地理位置
onLine 反映网络是否可用;geolocation 可获取用户地理位置(需用户授权):
console.log(navigator.onLine); // 输出:true(联网时)
navigator.geolocation.getCurrentPosition(function (pos) {
console.log('纬度:' + pos.coords.latitude); // 输出:纬度:31.2304(示例)
console.log('经度:' + pos.coords.longitude); // 输出:经度:121.4737(示例)
}, function (err) {
console.log('定位失败:' + err.message);
});
注意事项
appName、appCodeName、platform 等属性在新标准中已标记为废弃,不同浏览器可能返回相同或"伪造"的值(例如为了兼容而统一返回 Netscape、Mozilla)。因此做功能判断时,应优先检测"某个特性是否存在",而不是只信 UA 字符串。
小结:navigator 提供浏览器的"身份信息",最常用的是 userAgent、language、onLine 与 geolocation。UA 只能作参考,真正的兼容性判断要靠特性检测。