Open cssmagic opened 9 years ago
isWebkit和isMoz是基于vendor prefix检测,很不靠谱(浏览器随时可能去掉)。
如果要保持这个用法——其目的是检测vendor前缀用于css之类的,那么:
_.ua.vendor.webkit
vendor.ms
和 vendor.o
。(2个是因为有非webkit浏览器支持webkit前缀)isWebkit和isMoz是基于vendor prefix检测,很不靠谱(浏览器随时可能去掉)。
理论上是这样。但浏览器出于向后兼容的目的,不会轻易这样做。
而且除此以外我没找到更可靠的办法。
如果要保持这个用法——其目的是检测vendor前缀用于css之类的……
没有考虑这个目的。而且记得似乎 Zepto 内部已经做了类似的工作,我回头再查证一下。
我觉得还是要分析用途。判定isWebkit是用来干嘛的呢?
在内部,以前是用来为 WebKit 的特殊行为写兼容的,比如页面滚动条的 scrollTop
是在 body
上而不是在 html
上的,除此以外的其它地方很少用到。而且由于 jQuery 和 Zepto 已经对这个问题做了处理,所以后来基本不用了。
业务场景下应该几乎用不到。那不如我把这两个内核探测接口删掉吧。
嗯。那就删了吧。
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.isIPhone
- 当前 UA 是否为 iPhone。_.ua.isIPad
- 当前 UA 是否为 iPad。_.ua.isIPod
- 当前 UA 是否为 iPod touch。这些探测均基于 UA 信息。
_.ua.isAndroid
布尔值。当前 UA 是否为 Android 系统。
此探测基于 UA 信息。
_.ua.isMobileDevice
布尔值或
undefined
。当前 UA 是否为移动设备。所有 iOS 和 Android 设备会被识别为移动设备。此探测基于 UA 信息。
_.ua.osVersion
字符串。当前移动操作系统的版本号,格式为
{主版本号}.{次版本号}
。仅可识别 iOS 和 Android 系统的版本号,对于非移动操作系统或不可识别的移动操作系统,其值一律为'0.0'
。此探测基于 UA 信息。
示例
'7.0'
- 对 iOS 7.0.1 的探测结果。'4.4'
- 对 Android 4.4.4 的探测结果。'0.0'
- 对 Windows、Mac OS、WinPhone 的探测结果。