2012-05-09 67 views
9

我想在iPhone Safari中获得可用的屏幕大小,以便将容器缩小到屏幕的高度,减去状态栏和工具栏。iPhone Safari的screen.availHeight和状态栏/工具栏/地址栏

由于iOS总是返回屏幕尺寸,就好像手机是纵向的,所以我使用screen.availWidth来计算横向高度。以下是尺寸返回:

screen.width; //320 
screen.availWidth; //300 

的20px的差异占手机顶部状态栏,但不考虑在屏幕底部的按钮栏(工具栏)。

是否有任何属性可以使用,将返回268px?

我只是做(screen.availWidth - 32),但有可能用户将该网站添加为桌面书签,在这种情况下,此栏不会出现,并且300px值将是正确的。

+0

经过更多的研究和实验,availWidth是300确实有道理 - 它是高度减去20px状态栏。换句话说,减去操作系统镶边,而不是浏览器镶边。该值对于较老的iOS版本也不正确,因此我不建议太依赖它。 – howard10

+0

检查我对类似问题的回答,可能会有所帮助http://stackoverflow.com/questions/8205812/jquery-js-ios-4-and-document-height-problems –

回答

10

我没有确切的答案,但是您可以确定用户是在Mobile Safari还是在桌面书签中使用navigator.standalone属性。有了这个,你可以决定是否减去32px。

编辑:找到了答案。使用<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height" />然后正确的值可以从window.innerWidth/window.innerHeight

+0

阅读[this](http:// tripleodeon.com/2011/12/first-understand-your-screen/),我得出了类似的结论。感谢您指点我正确的方向。 – howard10