【问题标题】:Detecting iPhone 5 and any iOS device below it检测 iPhone 5 及其下方的任何 iOS 设备
【发布时间】:2012-09-12 09:44:20
【问题描述】:

在 SO 上向question 询问有关 iPhone 4 用户代理和 iOS 5.0 用户代理的问题。

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

我希望能够区分 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 = 物理像素/凹陷。

更多信息here

【问题讨论】:

  • @nhahtdh:嗯,这是 iOS 5.0 用户代理而不是 iPhone 5。记住,iOS 5.0 可以在包括 iPhone 5 在内的任何 iOS 设备上运行,但是我想区分 iPhone 4例如 iPhone 5。
  • @nhahtdh:你为什么要发表评论然后投票结束?另外,要不要给个理由?
  • 这是一个下意识的反应,没有仔细阅读您的问题。
  • @nhahtdh:很公平,投票结束也是下意识的?
  • @JonathanGrynspan:我正在开发的横向平台 2D 横向卷轴游戏的屏幕宽度。 ;-) 我想我刚刚回答了我自己的问题。我将使用屏幕宽度进行检测。 打脸

标签: javascript iphone ios5 ios4 user-agent


【解决方案1】:

为什么不根据屏幕对象检测-

screen.availWidth
screen.availHeight

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

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

【讨论】:

  • 那是 568,不是 548。
【解决方案2】:

2行就够了:

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

【讨论】:

  • 您还需要用户代理检测。仅屏幕尺寸是不够的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2011-04-16
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多