7

新しいKindle3GのWebKitブラウザーをいじってみると、実際の画面サイズを反映していないことに気づきwindow.screen.widthましwindow.screen.heightた。物理的な画面(または紙)のサイズは800x600です。私は得る:

  • ランドスケープモードで800x506
  • ポートレートモードで600x706

しかし、興味深いことに、デスクトップで実行されているChromeとSafari(WebKitでもあります)の両方が実際の画面解像度を報告します。

MDCによると、これらのプロパティは仕様の一部ではないため、報告する幅/高さの厳密な定義はおそらくありません。しかし、それらが実際の画面サイズを反映していると期待されるべきではありませんか?

4

4 に答える 4

9

アップデート:

window.screen.widthを使用するエミュレーターで見られる問題は、デバイスの実際のピクセルを反映しない画面を使用する場合です。つまり、画面に表示されるのは320で、デバイスの内容は480などです。ただし、画面幅の値が実際のピクセルではなく画面上のエミュレーターサイズを与える理由はわかりません。

これはデバイスでも同じ問題である可能性がありますか?それらの密度がいくつかのサイズでより高い場合...何らかの理由でこれがいくつかの間違った画面幅サイズに変換される可能性がありますか?

とにかく、私の解決策については以下をお読みください。


screen.availWidthは、エミュレーターの特定の画面サイズでは機能しません。

今私のために働いているのは:

window.innerWidth
window.innerHeight

ビューポートの値を返します。私の場合、HTML5アプリを実行しています。どうやら、この値はズーム時に更新されません。

AndroidのWebkitでは、このサイズにいくつかの問題があります。Androidの開発者がここでそれについて話しているのを見ることができます。おそらくHoneycombで修正されました。

誰かが、ソフトキーボードが存在するかのようにいくつかのサイズが必要だと主張しています。

于 2011-03-03T17:31:13.567 に答える
1

システムから間違った値を取得している場合、WebKitは何もできないと思います。確かに、これらの値はscreen.availWidthとscreen.availHeightで表す必要がありますが、これはマウス(ポインター)の位置のevent.screenXとevent.screenYに関連していると思います。

于 2010-09-13T16:19:06.080 に答える
1

多くのモバイルオペレーティングシステムでは、screen.availWidthとscreen.widthの両方が常にavailWidthを返しているように見えます。

これに関するドキュメントは見つかりませんでしたが、Android 2.2をテストし、要求に関係なく、画面サイズからトップメニューバーを差し引いたものを取得しました。

于 2010-09-13T16:14:01.157 に答える
0

違いは、Androidのステータスバーや下部のバーのサイズによるものです。

于 2013-10-18T17:06:22.637 に答える