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

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

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

从这个问题: 什么是iOS 5用户代理string

苹果手机:

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

iPad的:

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

以下是在JavaScript中testingios 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> 

您可以使用Modernizr并检测Web Workers,因为它们在iOS 5之前不可用。您仍然需要排除Android,因为Android 2.0已经支持它们。 这将使您向前兼容iOS6,而您将不会使用已提供的任何用户代理分析。

我已经进一步发展了chown的答案,并检查了任何iOS5设备,无论是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 } 

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

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