有人在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/