第13章:客户端检测

能力检测

又称为特性检测测试浏览器是否支持某个特性。例如检测浏览器是否支持getElementById:

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 用户代理检测通过浏览器的用户代理字符串确定使用的是什么浏览器。
  • navigator.oscpu 对应用户代理字符串中操作系统/系统架构相关信息。
  • navigator.vendor 包含浏览器开发商信息。
  • navigator.platform 表示浏览器所在的操作系统。
  • screen.colorDepth 和screen.pixelDepth返回一样的值,即显示器每像素颜色的位深。
  • screen.orientation 包含Screen Orientation API定义的屏幕信息。orientation.type和angle可以确定屏幕是否旋转。
  • navigator.geolocation 属性暴露了Geolocation API,可以让浏览器脚本感知当前设备的地理位置。
  • navigator. onLine 可以确定浏览器的联网状态。连网和断网会触发window的online和offline事件。
  • navigator.connection 网络连接状况。
  • navigator.getBattery() 属性暴露了Battery API,可以让浏览器脚本感知当前设备的电池状态。
  • navigator.hardwareConcurrency 返回浏览器支持的逻辑处理器核心数量
  • navigator.deviceMemory 返回设备大致的系统内存大小
  • navigator.maxTouchPoints 属性返回触摸屏支持的最大关联触点数量