4

関数を resize および orientationchange イベントにバインドしました。この関数では、windowwith を読み取ろうとしています。Iphone は常に正しいサイズを提供しますが、Android デバイス (2.2、2.3、および 4.0) は実際にウィンドウ サイズを変更する前にイベントをトリガーするようです。そのため、最新ではなく常に最後のウィンドウサイズを取得します。正しいウィンドウサイズを取得する方法 (タイムアウトなし) はありますか?

次の属性/関数を試しました: $(window).innerWidth(true) $(window).outerWidth(true) screen.width $(window).width()

それらのどれも正しい幅を与えていません。

助言がありますか?

4

1 に答える 1

3

幸い、onorientationchange イベントが発生すると、window.orientation は既に更新されています。回避策として、私はそれをオンにします:

switch(window.orientation) {
    case 90:
    case -90: // portrait;
        h = Math.max(window.innerWidth, window.innerHeight);
        w = Math.min(window.innerWidth, window.innerHeight);
        break;
    default: // landscape
        h = Math.min(window.innerWidth, window.innerHeight);
        w = Math.max(window.innerWidth, window.innerHeight);
        break;
}

理想的ではありませんが、機能します。

于 2012-07-20T13:15:23.307 に答える