我正在使用 window.innerHeight 和 window.innerWidth 说明来获取浏览器的可用窗口大小。它正在使用firefox,safari(在mac上)和android,但我在iOS中得到了奇怪的结果。
iOS始终返回innerHeight = 1091和innerWidth = 980。
我正在使用iOS SDK中的iOS模拟器(我没有iPhone / iPod)。 iPhone和iPhone Retina仿真器返回相同的值。我不明白他们如何能够返回相同的数字,因为2个模型有2种不同的屏幕分辨率。
我使用了viewport参数但没有成功。
答案 0 :(得分:17)
尝试使用screen.width
代替window.innerWidth
。
<script>
if (screen.width > 650) {
....
}
</script>
答案 1 :(得分:6)
添加
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no">
到<head>
元素。这将解决innerWidth
问题。
视网膜具有高密度像素 - 基本上是4个硬件像素到1个逻辑像素。这就是他们报告相同分辨率的原因。
答案 2 :(得分:5)
陷入了同样的问题。 这是适用于我的解决方案。
首先我检测客户端是否是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;
答案 3 :(得分:1)
查看Apple有关如何为Mobile Safari设置视口的文档及其扩展方式:http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html
基本上,您可以为视口设置比例,并通过在HTML页面上设置元标记使其默认为您想要的任何内容。
答案 4 :(得分: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 $(window).height()时出现问题,因为我错过了指定元标记中的高度。添加后效果更好。
答案 5 :(得分:1)
TL; DR:使用document.documentElement.clientHeight/Width
这并不完全是问题的答案,但是如果您尝试根据浏览器中显示的文档大小来做某事,则它是有用的信息。
即使您使用适当的视口元标记, window.innerWidth
(和高度)在移动浏览器上也会显得古怪。在某些浏览器中,它可能会非常不一致。
screen.width
对于移动浏览器来说效果更好,但是您需要考虑方向以及浏览器是移动还是台式机(如果您需要同时响应两者),例如screen.width
与window.innerWidth
相比,桌面版提供了更多变化。
根据我的经验,document.documentElement.clientWidth
是最好的选择。与window.innerWidth
相比,移动浏览器对此属性的一致性更高,并且由于您处理的是html元素的尺寸,而不是浏览器窗口或设备屏幕的尺寸,因此移动设备和台式机之间的一致性是一致的,无需考虑。
答案 6 :(得分:0)
iOS
的最新版本不支持window.innerHeight
和window.innerWidth
,因为iOS会读取分辨率。
因此,您可以使用此:
screen.width
screen.height
我已经在appetize.io模拟器iPhone中试用过。
答案 7 :(得分:0)
同样的问题。我有一个全屏应用程序,不需要用户扩展任何内容(这是一个自助服务终端),而我的解决方案是添加shrink-to-fit=no
元。
我当前的视口元是:
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no" />
现在window.innerWidth
,jQuery(window).width()
和其他所有相关的东西都可以正常工作。
在此之前,我必须旋转iPad并将其返回到原始位置,以使窗口大小值刷新为正确的大小。