1

私はJQMを使用しており、方向の変更には次を使用します:

$(window).bind('orientationchange', handleOrientationChange);

function handleOrientationChange() {
       var viewportWidth = 0;
           var viewportHeight = 0;

           // calculate map height and width
           if( typeof( window.innerWidth ) == 'number' ) {
               viewportWidth = window.innerWidth;
               viewportHeight = window.innerHeight;
           } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
               viewportWidth = document.documentElement.clientWidth;
               viewportHeight = document.documentElement.clientHeight;
           } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
               viewportWidth = document.body.clientWidth;
               viewportHeight = document.body.clientHeight;
}

Android では、ハンドル関数を呼び出すと、向きが変更された後ではなく、変更される前に寸法が取得されます。iPhoneでは正常に動作します。0.5/1 秒の小さな遅延を追加する必要があります...

誰かがその理由を知っているか、より良い解決策を持っていますか?

どうもありがとう。

4

1 に答える 1

0

私はそのsetTimeoutアイデアをうまく​​使いました。一度に 1 つのタイムアウトのみを設定するようにしてください。

var oc_timer;
$(window).bind('orientationchange', function () {
    clearTimeout(oc_timer);
    oc_timer = setTimeout(handleOrientationChange, 500);
});

問題は、orientationchangeAndroid デバイスでイベントがトリガーされるのが速すぎて、イベントが発生したときにビューポートのサイズがまだ更新されていないことだと思います。イベントにバインドしようとしましたresizeが、タイムアウトも必要でした。

于 2012-07-31T22:47:06.563 に答える