2012-05-09 68 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