CMUI / underscore.ext

[Deprecated] Please use `Gearbox` instead.
https://github.com/CMUI/gearbox
2 stars 3 forks source link

API 文档 - `ua` 模块 #53

Open cssmagic opened 9 years ago

cssmagic commented 9 years ago

API 文档 - ua 模块

这个模块在加载时会对当前 UA 进行探测,并以变量的方式提供探测结果。

这些探测浏览器内核和类型的接口仅用于底层开发或流量统计,不建议在业务层的常规功能中使用。

JavaScript 变量

_.ua.isWebKit

布尔值。当前 UA 是否为 WebKit 内核。请注意 Chrome 仍然会被识别为 WebKit 内核。

此探测基于特性检测。

_.ua.isMoz

布尔值。当前 UA 是否为 Mozilla (Gecko) 内核。

此探测基于特性检测。

_.ua.isTouchDevice

布尔值。当前 UA 是否为触屏设备。Chrome 开启触摸调试之后也将被视为触屏设备。

此探测基于特性检测。

_.ua.isSafari

布尔值。当前 UA 是否为 Safari 浏览器(包括桌面版与移动版)。

此探测基于 UA 信息。

_.ua.isChrome

布尔值。当前 UA 是否为 Chrome 浏览器(包括桌面版与移动版)。

此探测基于 UA 信息。

_.ua.isIOS

布尔值。当前操作系统是否为 iOS 系统。

还有以下对 iOS 设备更细节的探测(值为布尔值或 undefined):

这些探测均基于 UA 信息。

_.ua.isAndroid

布尔值。当前 UA 是否为 Android 系统。

此探测基于 UA 信息。

_.ua.isMobileDevice

布尔值或 undefined。当前 UA 是否为移动设备。所有 iOS 和 Android 设备会被识别为移动设备。

此探测基于 UA 信息。

_.ua.osVersion

字符串。当前移动操作系统的版本号,格式为 {主版本号}.{次版本号}。仅可识别 iOS 和 Android 系统的版本号,对于非移动操作系统或不可识别的移动操作系统,其值一律为 '0.0'

此探测基于 UA 信息。

示例

hax commented 9 years ago

isWebkit和isMoz是基于vendor prefix检测,很不靠谱(浏览器随时可能去掉)。

如果要保持这个用法——其目的是检测vendor前缀用于css之类的,那么:

  1. API建议改为_.ua.vendor.webkit
  2. 实现方法应为检测style里面前2个以大写字母开始的属性(除了ms这个变态之外),这样对于特定浏览器可以自动获得vendor.msvendor.o。(2个是因为有非webkit浏览器支持webkit前缀)
cssmagic commented 9 years ago

isWebkit和isMoz是基于vendor prefix检测,很不靠谱(浏览器随时可能去掉)。

理论上是这样。但浏览器出于向后兼容的目的,不会轻易这样做。

而且除此以外我没找到更可靠的办法。

如果要保持这个用法——其目的是检测vendor前缀用于css之类的……

没有考虑这个目的。而且记得似乎 Zepto 内部已经做了类似的工作,我回头再查证一下。

hax commented 9 years ago

我觉得还是要分析用途。判定isWebkit是用来干嘛的呢?

cssmagic commented 9 years ago

在内部,以前是用来为 WebKit 的特殊行为写兼容的,比如页面滚动条的 scrollTop 是在 body 上而不是在 html 上的,除此以外的其它地方很少用到。而且由于 jQuery 和 Zepto 已经对这个问题做了处理,所以后来基本不用了。

业务场景下应该几乎用不到。那不如我把这两个内核探测接口删掉吧。

hax commented 9 years ago

嗯。那就删了吧。