向き変更時に画面幅を計算する必要があります。
私はこのようにやっています:
$(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)