2013-04-09 164 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