Skip to content
This repository has been archived by the owner on Aug 24, 2022. It is now read-only.

API 文档 - ua 模块 #53

Open
cssmagic opened this issue Apr 2, 2015 · 5 comments
Open

API 文档 - ua 模块 #53

cssmagic opened this issue Apr 2, 2015 · 5 comments
Labels

Comments

@cssmagic
Copy link
Member

cssmagic commented Apr 2, 2015

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 的探测结果。
@cssmagic cssmagic added the doc label Apr 2, 2015
@hax
Copy link

hax commented Jul 8, 2015

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

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

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

@cssmagic
Copy link
Member Author

cssmagic commented Jul 8, 2015

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

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

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

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

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

@hax
Copy link

hax commented Jul 8, 2015

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

@cssmagic
Copy link
Member Author

cssmagic commented Jul 9, 2015

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

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

@hax
Copy link

hax commented Jul 9, 2015

嗯。那就删了吧。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants