2

向き変更時に画面幅を計算する必要があります。

私はこのようにやっています:

$(window).on('orientationchange', function(event){
   $(this).panelWidth("orientationchange")
   });

panelWidth: function (fromWhere) {
   window.setTimeout(function () {
      var $wrapWidth = $('div:jqmData(wrapper="true").ui-page-active').innerWidth();
      console.log( $wrapWidth );
      },10);
   });

画面幅の計算にすでに10msの遅延を使用していますが、Androidではまだ機能しません...

私の画面は320x480です。ポートレートから始めてランドスケープに変更すると、320pxになります。縦向きに戻すと、480pxをコンソールするので、実際に向きが変わる前に、幅は常に計算されているように見えます。

可能であればタイムアウトを増やしたくありません。Androidが画面の「回転」を終了したときにのみ$wrapWidthが計算されるようにするには、他にどのような方法がありますか?

手伝ってくれてありがとう!

編集
Jquery Mobile sourceodeからの情報:

...as the actual screen resize takes place before or after the orientation 
change event has been fired depending on implementation (eg android 2.3 is 
before, iphone after). More testing is required to determine if a more reliable 
method of determining the new screensize is possible when orientationchange 
is fired. (eg, use media queries + element + opacity)
4

1 に答える 1

6

これはフレームワーク Android デバイスのバグです。できることは 2 つあります。

  1. thisに従って、タイムアウトを100ミリ秒に変更します。どうやらそれは問題を解決します。
  2. オリジンが変更される前に発生するイベントのため、幅と高さには反対の値を使用してください。お気に入り:

    $(window).bind('orientationchange', function(event){ if(event.orientation == 'portrait') { // ページを横向きに変更 } else if (event.orientation == 'landscape') { / / ページを縦向きに変更する }
    });

于 2012-04-16T13:14:15.903 に答える