Android 4 は screen.width/height の値もデバイスピクセル値で返す

先日 Android 4 の標準ブラウザには、メディアクエリに使われる device-width/height が CSS ピクセルではなくデバイピクセル値として扱われてしまうバグがあることを紹介した。

今回、同様のバグは JavaScript の screen.width, screen.height の値にも存在することが分かった。

次のコードを実行することで確認できる。

document.write([screen.width, screen.height].join(", "));

iPhone 4 / iOS 6 では Safari, Chrome *1 ともに、仮想的な画面サイズ「320, 480」が返ってくる。しかし Android 4 がインストールされている高解像度の端末では device-pixel-ratio を乗じた値が返ってきてしまう。

*1:Chrome 26.0.1410.53