在移动Safari中检测iOS5(首选javascript)

时间:2011-10-18 23:32:04

标签: javascript iphone ios mobile safari

iOS5中引入的新固定定位损坏了我的webapp,我需要一种方法来检测iOS5用户。

如何检测iOS5?什么是浏览器代理字符串? JavaScript首选。谢谢!

4 个答案:

答案 0 :(得分:15)

From the SO question: What is the iOS 5 user-agent string:

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

ipad公司:

  

Mozilla / 5.0(iPad; CPU OS 5_0,如Mac OS X)AppleWebKit / 534.46(KHTML,类似Gecko)版本/ 5.1 Mobile / 9A334 Safari / 7534.48.3

以下是在javascript中测试ios 5.x的方法:

<script type="text/javascript">
    if (navigator.userAgent.match(/OS 5(_\d)+ like Mac OS X/i))
        // this helps detect minor versions such as 5_0_1
        document.write("You have iOS 5! Aren't you special!");
</script>

答案 1 :(得分:3)

我已经开发了chowns进一步回答,检查任何iOS 5设备,无论是5还是5.0.1或更高版本:

var ios5 = navigator.userAgent.match(/OS 5_[0-9_]+ like Mac OS X/i) != null;
if(ios5) {
    // Now you can do specific stuff for devices on any version of iOS5
}

答案 2 :(得分:2)

您需要考虑“CPU OS 5_0”和“CPU iPhone OS 5_0”,粗糙和脏的正则表达式:

<script type="text/javascript">
if (navigator.userAgent.match(/(iPad|iPhone);.*CPU.*OS 5_\d/i))
{ 
   alert("On iOS 5")
}
else
{
   alert("Not on iOS 5"); //could be either 4- or 6+
}
</script>

答案 3 :(得分:2)

您可以使用Modernizr并检测Web Workers,因为它们在iOS 5之前不可用。您仍然需要排除Android,因为Android 2.0+已经支持它们。这将为您提供与iOS6的向前兼容性,这是您已经提供的任何一个用户代理解析都无法获得的。