私はwindow.innerHeightとwindow.innerWidthの手順を使用して、ブラウザーの使用可能なウィンドウサイズを取得しています。 Firefox、Safari(Mac)およびAndroid=で動作しますが、iOSでは奇妙な結果になります。
iOSは常にinnerHeight = 1091およびinnerWidth = 980を返します。
IOS SDKのiOSエミュレーターを使用しています(iPhone/iPodを所有していません)。 iPhoneおよびiPhone Retinaエミュレーターでも同じ値が返されます。 2つのモデルには2つの異なる画面解像度があるため、両方が同じ数値を返す方法を理解できません。
私は成功せずにビューポートパラメータで遊んだ。
screen.width
の代わりに window.innerWidth
。
<script>
if (screen.width > 650) {
....
}
</script>
追加
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no">
<head>
要素。 innerWidth
の問題が修正されます。
網膜には高密度のピクセルがあり、基本的には4つのハードウェアピクセルから1つの論理ピクセルまでです。彼らが同じ解決策を報告するのはそのためです。
同じ問題で立ち往生していた。ここに私のために働いた解決策があります。
まず、クライアントがiOSデバイスかどうかを検出しています。次に、 画面インターフェイス を使用して正しい値を取得しています
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
var iw = (iOS) ? screen.width : window.innerWidth, ih = (iOS) ? screen.height : window.innerHeight;
iOS
最新バージョンは、iOSが解像度を読み取るため、window.innerHeight
およびwindow.innerWidth
をサポートしていません。
だから、これを使うことができます:
screen.width
screen.height
Appetize.ioエミュレーターiPhoneで試してみました。
Mobile Safariのビューポートを設定する方法とそのスケーリング方法については、Appleのドキュメントを確認してください。 http://developer.Apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html
基本的に、ビューポートの縮尺を設定し、HTMLページにメタタグを設定することで、デフォルトを希望どおりに設定できます。
また、これに従ってビューポートメタタグで高さを指定します。
<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()を使用するときに問題がありました。メタタグで高さを指定し忘れていたためです。追加した後は、はるかにうまく機能します。
TL; DR:document.documentElement.clientHeight/Width
を使用
これは質問に対する回答ではありませんが、ブラウザに表示されるドキュメントのサイズに基づいて操作を行う場合に役立ちます。
window.innerWidth
(および高さ)は、適切なビューポートメタタグを使用している場合でも、モバイルブラウザーで奇抜になることがあります。一部のブラウザでは、非常に一貫性がない場合があります。
screen.width
はモバイルブラウザーでより適切に機能しますが、screen.width
はさらに多くの機能を備えているため、方向性と、ブラウザーがモバイルかデスクトップか(両方に応答する必要がある場合)かどうかを考慮する必要があります。 window.innerWidth
と比較したデスクトップのバリエーション。
私の経験では、document.documentElement.clientWidth
が最善の方法です。モバイルブラウザーはwindow.innerWidth
よりもこの属性の方がはるかに一貫性があり、ブラウザーウィンドウやデバイス画面ではなくhtml要素のサイズを扱っているため、モバイルとデスクトップ間で一貫性があり、向きは考慮する必要はありません。