2011-01-07 129 views
18

我使用window.innerHeightwindow.innerWidth指令来获取浏览器的可用窗口大小。它与firefox,safari(在Mac上)和android一起工作,但我在iOS中得到了奇怪的结果。的iOS返回错误值window.innerHeight /宽

iOS总是返回innerHeight = 1091和innerWidth = 980。

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

我玩视口参数没有成功。

回答

1

检查苹果对如何设置视口的移动Safari浏览器,以及它如何扩展文件:http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html

基本上,你可以设置一个规模为视口,并使其默认为任何你想要通过设置元标记在您的HTML页面上。

+0

然后我得到正确的值,我在这里发帖之前找到了这个网页。我不完全确定这是相关的,但我没有找到如何使移动Safari移动到不扩展到980x1091。我尝试使用但没有改变任何东西。 – ohmer 2011-01-07 21:27:44

+0

如果您希望视口为320x480,您应该尝试使用' pgb 2011-01-07 21:35:39

+0

不起作用... safari仍然返回980x1091 。 – ohmer 2011-01-10 18:20:38

6

添加

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

<head>元素。这将修复innerWidth问题。

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

+2

没有帮助我的情况...使用Xcode 4.6.3和iPhone 6.1模拟器 – Kozuch 2013-08-29 09:29:46

+8

`maximum-scale = 1.0; user-scalable = no` <=永远不要这样做。禁用缩放对于可用性和可访问性来说是可怕的做法 – 2014-02-25 19:09:09

1

同样,根据指定的视口元标记高度:

<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 $(窗口).height(),因为问题我错过了指定meta标签的高度。添加后它效果更好。

13

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

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

卡住了同一个问题。 这是为我工作的解决方案。

首先我检测客户端是否是iOS设备。 使用Screen interface

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