这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战
这篇文章主要介绍一些浏览器客户端的检测相关的东西,这在面试题中虽然问得不多,一旦问到便会手足无措,虽然借助一些第三方的开发框架,可以不用在意一些客户端的问题,但作为一个开发者,需要有所了解。
浏览器的能力检测
这个比较容易理解,就是检测当前浏览器是否支持某些能力/特性,最简单的就是在 JavaScript 中运行代码,检测代码是否可以正常被运行,例如在 IE5 之前的版本中,是没有document.getElementById这个方法的,可以通过document.all替代。
function getElement(id) {
if (document.getElementById) {
return document.getElementById(id);
} else if (document.all) {
return document.all[id];
} else {
throw new Error("No way to retrieve element!");
}
}
还有一个能力检测,是验证有效场景是否存在的同时,是否能够展现出与其的行为,称为安全能力检测。 根据检测浏览器特性并和已知的特性进行对比,就可以确认用户的浏览器类型,而不是采用 navigator.userAgent 属性的方式。
识别客户端硬件信息
window.navigator 是一组可以提供执行环境相关信息的 API,包括浏览器、操作系统、硬件和周边设备信息。不过有些浏览器还不够支持,不能很可靠的使用这个 API。 其中常见的属性有如下:
- navigator.oscpu:返回浏览器的所在平台
- navigator.vendor:返回浏览器的开发商信息
- navigator.platform:返回浏览器的操作系统信息 还有了 Geolocation API,可以让浏览器获取当前设备的地理位置,当然,这只能在 HTTPS 环境下执行,它可以精确的查找并返回设备的地理位置,如果设备支持的话。在手机上或拥有 GPS 支持的设备精度会更高,而仅通过 IP 地址获取地理位置则会降低很多精度。 还有 Battery Status API 可以获取设备电池以及充电状态等信息等等。
最后
浏览器客户端检测是大部分 web 应用中可以不太会涉及到的地方,如果不是特别需要,那么只需要了解基本的东西即可,面试可以有的聊,开发时可以具体的看文档。