有人在SO上询问了question有关iPhone 4用户代理和iOS 5.0用户代理的信息。

我使用以下方法检测不同的移动设备,视口(viewport)和屏幕。

我希望能够区分iPhone 5和所有其他iOS设备。据我所知,我用来检测iOS 5.0用户代理var iPhone5的行也将适用于任何运行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;
window.devicePixelRatio是物理像素与设备上与设备无关的像素(dip)之间的比率。 window.devicePixelRatio =物理像素/倾 Angular 。

更多信息here

最佳答案

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

screen.availWidth
screen.availHeight

在我的iPhone 5上,它报告的宽度为320,高度为548,这是非视网膜形式的分辨率。

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

关于javascript - 检测iPhone 5及其下方的任何iOS设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12505618/

10-09 18:11
查看更多