2013-04-09 86 views
1

有没有办法使用JavaScript或其他基于浏览器的语言获取iOS 设备版本(而不是OS版本)?例如; iPhone5,iPhone 4S,iPad 3等如何使用JavaScript获取iOS设备版本?

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

"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"

而一个iPhone4的运行6.1.3:

"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和前几代。

+0

抱歉,我现在不能选中此项,因为我不现在有一个IOS设备在我身边,但你可以在其他变量检查navigator.appName,navigator.platform,navigator.product,navigator.vendor等浏览器,看看是否有任何区别。 – 2013-04-09 19:25:00

+0

你为什么需要这样做?如果浏览器具有相同的功能,那么谁在乎呢?如果浏览器不具备相同的功能,那么您可以在JavaScript中使用标准对象检测方法。基于用户代理改变功能不是最佳实践。 – ErikE 2013-04-09 20:01:06

+0

它不是用于更改功能,而是用于基于Web的分析解决方案。 – Gigazelle 2013-04-09 20:23:44

回答

1

你不行。您可以找到iPhoneiPad以及该设备运行的是哪个版本的iOS,但是找不到型号名称,例如iPhone 4

+0

谢谢。我希望有办法做到这一点,但看起来你是绝对正确的。 – Gigazelle 2013-04-19 15:38:20

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