Javascript 检测iPhone 5及其下的任何iOS设备

Javascript 检测iPhone 5及其下的任何iOS设备,javascript,iphone,ios5,ios4,user-agent,Javascript,Iphone,Ios5,Ios4,User Agent,有人问了一个关于iPhone4用户代理和用户代理的问题 我使用以下方法来检测不同的移动设备、视口和屏幕 我希望能够区分iPhone5和所有其他iOS设备。据我所知,我用来检测iOS 5.0用户代理的代码也适用于任何运行iOS 5.0的iOS设备,所以从技术上讲是不正确的 var pixelRatio = window.devicePixelRatio || 1; var viewport = { width: window.innerWidth, height: window.

有人问了一个关于iPhone4用户代理和用户代理的问题

我使用以下方法来检测不同的移动设备、视口和屏幕

我希望能够区分iPhone5和所有其他iOS设备。据我所知,我用来检测iOS 5.0用户代理的代码也适用于任何运行iOS 5.0的iOS设备,所以从技术上讲是不正确的

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;
窗口。devicePixelRatio
是设备上物理像素和设备独立像素(DIP)之间的比率<代码>窗口。devicePixelRatio=物理像素/凹陷


更多信息。

为什么不基于屏幕对象进行检测-

screen.availWidth
screen.availHeight
在我的iPhone5上,它报告了320宽和548高,这是它在非视网膜形式下的分辨率

您不应该使用window.innerWidth和window.innerHeight,因为它报告视口大小。如果页面被放大,它将报告放大区域的大小,而不是可用屏幕的正确大小。

2行就足够了:

var iphone4 = (window.screen.height == (960 / 2));
var iphone5 = (window.screen.height == (1136 / 2));

@NHAHDH:这是iOS 5.0用户代理,而不是iPhone 5。记住,iOS 5.0可以在包括iPhone 5在内的任何iOS设备上运行,但是我想区分iPhone 4和iPhone 5。@nhahtdh:为什么你会评论然后投票关闭?另外,你能给出一个理由吗?这是一个下意识的反应,没有仔细阅读你的问题。@NHAHDH:很公平,投票结束也是下意识的?@JonathanGrynspan:我正在开发的横向平台2D侧滚游戏的屏幕宽度。;-)我想我已经回答了我自己的问题。我将使用屏幕宽度进行检测。你还需要用户代理检测。光是屏幕大小是不够的,那是568,而不是548。