最初に: はい、Google で検索しました。Google の検索結果のダークサイドにも入りました。
Android Nexus S と Android 2.3.5 のデフォルト ブラウザーを使用すると、window.innerHeight が間違った値を報告します。
window.height (452 である必要があります) からキーボードの高さ (207) を引いた値が報告されます。これは特に、リロード (アドレスバーに触れて [go] をクリック) 後に発生します。
このコード例は、間違った結果を返します。
$(function() {
alert(window.innerHeight); // 245
setTimeout(function() {
alert(window.innerHeight); // 245
}, 1000);
});
以下はすべて間違った結果を返します。
$(body).height(); // (way) too high
screen.height; // 245
window.outerHeight; // 600+
document.body.offsetHeight; //646
screen.height / window.devicePixelRatio - window.screenTop; //125.xxx;
window.onResize イベントはトリガーされませんが、2 回回転すると高さの問題が修正されます (ただし、クライアントにそうするように指示することはできません)。
ビューポートを少しいじりました。これは私の現在のものです:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1, user-scalable=no target-densityDpi=160" />
Android と window.innerHeight の聖杯が利用できる (そして無料で使用できる) インターネットのニッチなコーナーを逃したことを願っています ;)
したがって、解決策、または過去に同様のものを修正したものを知っている場合は、共有してください:)