2011-01-07 5 views
18

に悪い値を返します。それは、Firefox、Safari(mac上で)とアンドロイドで動作していますが、私はiOSで奇妙な結果を得ます。iOSのは、私は、ブラウザの利用可能なウィンドウサイズを取得するために<em>window.innerHeight</em>と<em>window.innerWidth</em>命令を使用していwindow.innerHeight /幅

iOSは常にinnerHeight = 1091とinnerWidth = 980を返します。

iOS SDKのiOSエミュレータを使用しています(私はiPhone/iPodを所有していません)。同じ値がiPhoneとiPhone Retinaエミュレータで返されます。私は2つのモデルが2つの異なる画面の解像度を持っているので、両方が同じ数字を返すことができる方法を理解していません。

私はビューポートパラメータで成功しませんでした。

答えて

1

モバイルSafariのためにビューポートを設定する方法については、Appleのドキュメントをチェックし、どのようにそれがスケール:http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html

基本的に、あなたはビューポートのスケールを設定し、それがメタを設定することで、あなたが好きにデフォルト設定することができますがタグをHTMLページに追加します。

+0

を使用して正しい値を取得しています。私はこれが完全に関連しているかどうかは確かではありませんでしたが、サファリモバイルを980x1091まで拡張できないようにする方法を見つけられませんでした。私はで試しましたが、何も変更しませんでした。 – ohmer

+0

ビューポートを320x480にする場合は、 '' – pgb

+0

を試してみてください。サファリはまだ980x1091 。 – ohmer

6

<head>要素に

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no"> 

を追加します。これでinnerWidth問題が修正されます。

網膜は、基本的に4ハードウェアピクセルから1論理ピクセルの高密度ピクセルを持っています。だから彼らは同じ解決策を報告しています。

+2

私の場合助けてくれなかった... Xcode 4.6.3とiPhone 6.1シミュレータ – Kozuch

+8

'maximum-scale = 1.0; user-scalable = no' <=決してこれを行いません。使い勝手とアクセシビリティのためにズームを無効にすることはひどい練習です –

+1

私は 'innerWidth'のチェックを' setTimeout'に入れて動作させる必要がありました。 'window.onload'でも980を返します。私はメタタグを持っています。 'screen.width'はすぐに動作します。 –

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の$(ウィンドウ).height()を使用して問題を抱えていました私はメタタグの高さを指定していなかった。それを追加した後は、はるかに優れています

+2

フルスクリーンではないiOSアプリを使用している場合、これは壊れます。スプリットビューの右ペインにのみ埋め込まれていても、フルスクリーンサイズのWebビューを作成します。 –

13

window.innerWidthの代わりにscreen.widthを使用してください。

<script> 
    if (screen.width > 650) { 
    .... 
    } 
</script> 
+1

クロスブラウザCSSを書くときにこのアプローチに注意しなければならないことは、デスクトップ上の 'screen.width'が高くなることを覚えておきたいのです。OS自体の画面解像度のピクセル幅を報告するので、 Webブラウザウィンドウのピクセル幅ではありません。 – f1lt3r

+0

これは正しい答えとしてマークする必要があります –

3

同じ問題を抱えていました。 私のために働いた解決策はここにあります。

まず、クライアントが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; 
+0

iPhoneの向きによって 'window.innerWidth'が異なります。 'window.orientation'も参照する必要があります。 –

関連する問題