iOS为window.innerHeight / Width返回不合适的值

我使用window.innerHeightwindow.innerWidth指令来获取浏览器的可用窗口大小。 它与Firefox,safari(在Mac上)和Android工作,但我在iOS中得到奇怪的结果。

iOS始终返回innerHeight = 1091和innerWidth = 980。

我使用iOS SDK的iOS模拟器(我没有iPhone / iPod)。 iPhone和iPhone Retina模拟器返回相同的值。 我不明白他们如何能返回相同的数字,因为2模型有2个不同的屏幕分辨率。

我玩视口参数没有成功。

尝试使用screen.width而不是window.innerWidth

 <script> if (screen.width > 650) { .... } </script> 

 <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no"> 

<head>元素。 这将解决innerWidth问题。

视网膜具有高密度像素 – 基本上是4个硬件像素到1个逻辑像素。 这就是为什么他们报告相同的决议。

被困在同一个问题上。 这是为我工作的解决scheme。

首先,我正在检测客户端是否是iOS设备。 然后我使用屏幕界面得到正确的值

 var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; var iw = (iOS) ? screen.width : window.innerWidth, ih = (iOS) ? screen.height : window.innerHeight; 

查看Apple的文档,了解如何为Mobile Safari设置视口以及如何缩放: http : //developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html

基本上,您可以为视口设置一个缩放比例,并通过在HTML页面上设置元标记来将其设置为默认值。

还要根据以下内容在视口元标记中指定高度:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />

我在我的iPad 2(5.0.1)上使用jQuery $(window).height()时遇到了问题,因为我错过了指定元标记的高度。 join后效果更好。