2012-12-10 73 views
2

是否有任何使用功能检测来检测iOS6设备的通用方法?如何使用功能检测来检测iOS6设备

+0

所有“高”设备(目前的iPhone 5和第五代触摸)都有iOS6,但这当然只是一个(仍然很小)的一部分。根据iOS版本,你打算做什么不同?也许有另一种方法来检测相关的信息呢? – Thilo

+0

你可能可以从'navigator.userAgent'得到它 –

+0

我只是想检测iOS6,我觉得功能检测会比使用userAgent更好。 – Exception

回答

2

我认为最好的方法是始终使用parse the user agent string,但是您可以使用以前不支持的功能(请参阅this article获取更完整的列表,我将仅举一例)检测iOS 6引入的Safari版本。

基本上你模仿的modernizr使用相同的技术,这片的代码,如果<input>file支持你检查一下,如果是那么你在Safari上运行的iOS 6或更高。当然,只是使用功能,你不能确定用户没有使用其他浏览器(这就是为什么我更喜欢用户代理字符串,如果你必须检测操作系统版本)。比较见this post here on SO

function isNewVersion() { 
    var elem = document.createElement("input"); 
    elem.setAttribute("type", "file"); 

    return elem.type !== "text"; 
} 
2

您可以检查FileReader API,但是这当然会匹配许多现代的桌面浏览器,太(我不知道这是怎么回事给你带来一些问题,但我对此表示怀疑):

var iOS6 = false; 
if(window.FileReader) 
{ 
    iOS6 = true; 
} 
+0

这似乎比创建一个元素并检查其属性更好。它可以简单地写成'iOS6 = !! window.FileReader;' – Jake

+0

这是最初的想法:) – BenM