2012-05-09 11 views
9

iPhone Safariで利用可能な画面サイズを取得して、ステータスバーとツールバーを除いた画面の高さまでコンテナを縮小しようとしています。iPhone Safari screen.availHeightとstatusbar/toolbar/addressbar

iOSは常に電話機が縦向きになっているかのように画面のサイズを返しますので、screen.availWidthを使用して横の高さを調整しています。次は、寸法が返されます。

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

を20ピクセル差は電話でトップステータスバーを占めますが、アカウントに、画面の下部にあるボタンバー(ツールバー)を取ることはありません。

268pxを返すのに使うことができるプロパティはありますか?

私はちょうど(screen.availWidth - 32)しますが、ユーザがサイトをデスクトップブックマークとして追加する可能性があります。その場合、このバーは表示されず、300pxの値が正しいでしょう。

+0

さらに多くの研究と実験の後、availWidthは300となります。これは高さから20pxのステータスバーを引いたものです。言い換えれば、ブラウザクロムではなくOSクロムを除いたものです。古い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

関連する問題