ChatGPT解决这个技术问题 Extra ChatGPT

什么是 iOS 5.0 用户代理字符串?

什么是 iOS 5.0 用户代理字符串?

这是 iOS 4.0 用户代理:What is the iPhone 4 user-agent?

在此 SO answer 上,您可以找到一个通用正则表达式来检查给定的用户代理字符串是否是 iOS 5.0 字符串。

c
chown

苹果手机:

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

平板电脑:

Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

正确的。从我的 iPhone:Mozilla/5.0(iPhone;CPU iPhone OS 5_0 像 Mac OS X)AppleWebKit/534.46(KHTML,像 Gecko)版本/5.1 Mobile/9A334 Safari/7534.48.3
N
Nate

该网站似乎keep a complete list that's still maintained

iOS 2.0 - 5.1.1(迄今为止)的 iPhone、iPod Touch 和 iPad。

您确实需要从页面列中列出的信息中组装完整的用户代理字符串。


我从此处引用的站点开始,但它没有 web-kit 内部版本号,这是 Google Analytics 显示的。我在 useragentstring.com/pages/Safari 找到了更完整的列表。
我编制了一个包含大量用户代理的列表。希望它会有所帮助:codereye.com/2014/12/list-of-mobile-user-agents.html
谢谢@Nate,会这样做的。
A
Andrew Steitz

我在 user agent string 找到了更完整的列表。顺便说一句,这个网站不仅仅是 iOS 用户代理字符串。此外,主页将为您“分解”当前浏览器的用户代理字符串。


用户代理字符串链接已损坏。 :(我认为现在应该指向这里:useragentstring.com/pages/useragentstring.php?name=Safari
@LucasMorgan,感谢您的注意!我已经在我的答案中修复了它。
G
Geek Devigner

通过擦除 LOWERCASE“iphone os 5_0”而不是“iPhone OS 5_0”的字符串来修复我的代理字符串评估。现在,当大写擦除失败时,我正在正确地将 iOS 5 特定类分配给我的 html。


好吧,我个人会检测到的不仅仅是 iPhone,因为在上面的示例中,您没有将 iOS 5 特定代码渲染到 iPad 和 iPod touch。您可能还想考虑的是版本会在某个时候增加。我的建议可能对大多数人来说是显而易见的 - 首先检测苹果移动设备,即 iPad/iPod/iPhone,然后,如果是这种情况,解析出......不是 iOS 而是可能是浏览器的版本,即在这种情况下版本/5.1 将是指标。一旦您知道版本,您将在“不低于”条件下应用您的代码。
f
fulvio

我使用以下内容来检测不同的移动设备、视口和屏幕。对我来说效果很好,可能对其他人有帮助:

var pixelRatio = window.devicePixelRatio || 1;

var viewport = {
    width: window.innerWidth,
    height: window.innerHeight
};

var screen = {
    width: window.screen.availWidth * pixelRatio,
    height: window.screen.availHeight * pixelRatio
};

var iPhone = /iPhone/i.test(navigator.userAgent);
var iPhone4 = (iPhone && pixelRatio == 2);
var iPhone5 = /iPhone OS 5_0/i.test(navigator.userAgent);
var iPad = /iPad/i.test(navigator.userAgent);
var android = /android/i.test(navigator.userAgent);
var webos = /hpwos/i.test(navigator.userAgent);
var iOS = iPhone || iPad;
var mobile = iOS || android || webos;

window.devicePixelRatio 是设备上的物理像素和与设备无关的像素(下降)之间的比率。 window.devicePixelRatio = 物理像素/下降。

更多信息here


感谢您的回复,但请注意,这不是一种有效的方式,并且某些设备版本会丢失。例如,我刚刚检查了我古老的 iPad 1 上的用户代理,它显示“...iPad;CPU OS 5_1_1...”。您的任何变量都不会捕捉到这一点。您需要像 var iOS5 = /(iPhone|iPad).*OS 5_.*/i.test(navigator.userAgent); 这样的正则表达式