【问题标题】:How can I get iOS device version using JavaScript?如何使用 JavaScript 获取 iOS 设备版本?
【发布时间】:2013-04-01 09:34:46
【问题描述】:

有没有办法使用 JavaScript 或其他基于浏览器的语言获取 iOS device 版本(相对于 OS 版本)?例如; iPhone5、iPhone 4S、iPad 3 等

我无法在navigator.userAgent(或navigator 的任何方法)中找到此信息,因为它只报告操作系统版本(而不是使用的设备)。例如,运行 6.1.3 的 iPhone5 有这个用户代理:

"Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25"

还有运行 6.1.3 的 iPhone4:

"Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25"

我能找到的最好的方法是使用 screen.widthscreen.height,因为这至少可以让我区分 iPhone5、iPhone4 和前几代产品。

【问题讨论】:

  • 抱歉,我现在无法检查这个,因为我目前没有 IOS 设备,但您可以检查导航器中的其他变量,例如 navigator.appName、navigator.platform、navigator.product、navigator.vendor、等等看看有没有区别。
  • 为什么需要这样做?如果浏览器具有相同的功能,那么谁在乎呢?如果浏览器没有相同的功能,那么您可以使用 JavaScript 中的标准对象检测方法来判断。基于用户代理更改功能不是最佳做法。
  • 它不是为了改变功能,而是为了一个基于网络的分析解决方案。

标签: javascript iphone device


【解决方案1】:

这个适合我

var iOS = parseFloat(('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) .replace('undefined', '3_2').replace('_', '.').replace('_', '')) || false;

它在 iPhone 上返回 10.3

【讨论】:

  • 我认为在原始帖子中用户询问的是设备版本,而不是 iOS 版本
【解决方案2】:

你不能。可以找到iPhoneiPad,以及设备运行的iOS版本,但找不到iPhone 4等型号名称。

【讨论】:

  • 谢谢。我希望有办法做到这一点,但看起来你是绝对正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 2020-10-16
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多