23

誰かが電話のギャップでjquerymobileによる向き変更イベントの正しいコードを教えてもらえますか?このorientationChange関数をどこでどのように実装しますか?

4

4 に答える 4

45
$(window).bind('orientationchange', _orientationHandler);

次に、_orientationHandler関数で次のようにします。

if(event.orientation){
      if(event.orientation == 'portrait'){
                  //do something
      }
      else if(event.orientation == 'landscape') {
                    //do something
      }
}
于 2012-04-05T08:40:20.750 に答える
12
$(window).bind( 'orientationchange', function(e){
    if ($.event.special.orientationchange.orientation() == "portrait") {
        //Do whatever in portrait mode
    } else {
        //Do Whatever in landscape mode
    }
});

iOSをターゲットにしていて、orientationchangeが機能しない場合は、bind関数のeventパラメーターにresizeイベントを追加できます。向きを変更すると、サイズ変更イベントも発生します。

于 2012-04-05T09:35:47.680 に答える
1

次のコードは、向きの変化を検出するためにすべてのブラウザで機能するはずです。jqueryモバイルイベントを使用しませんが、ほとんどのデバイスで機能するようです。

1. var isIOS = /safari/g.test(navigator.userAgent.toLowerCase());
2. var ev = isIOS ? 'orientationchange' : 'resize'; 
3. var diff = (window.innerWidth-window.innerHeight);
4. $(window).bind(ev,function(){
5.     setTimeout(function(){
6.         if(diff*((window.innerWidth-window.innerHeight)) < 0)
7.             orientationChanged();
8.     },500);
9. });

2行目は、他のデバイスの他のブラウザーが方向変更イベントよりも一貫してサイズ変更イベントを取得するため、Safari以外のブラウザーのサイズ変更イベントを取得します。 http://www.quirksmode.org/m/table.html

一部のAndroidネイティブブラウザは新しい幅をすぐに使用しないため、5行目はタイムアウトでチェックを実行します。

6行目方向の変更を行うには、新旧の高さと幅の差の積が負である必要があります。

于 2013-10-02T14:26:43.277 に答える
1

iOS 7 Safariではorientationchangeイベントがトリガーされなかったため、モバイルテンプレートでこれを使用しています。

    // ORIENTATION CHANGE TRICK
    var _orientation = window.matchMedia("(orientation: portrait)");
    _orientation.addListener(function(m) {
        if (m.matches) {
            // Changed to portrait
            $('html').removeClass('orientation-landscape').addClass('orientation-portrait');
        } else {
            // Changed to landscape
            $('html').removeClass('orientation-portrait').addClass('orientation-landscape');
        }
    });
    //  (event is not triggered in some browsers)
    $(window).on('orientationchange', function(e) {
        if (e.orientation) {
            if (e.orientation == 'portrait') {
                $('html').removeClass('orientation-landscape').addClass('orientation-portrait');
            } else if (e.orientation == 'landscape') {
                $('html').removeClass('orientation-portrait').addClass('orientation-landscape');
            }
        }
    }).trigger('orientationchange');
    // END TRICK
于 2014-06-18T10:54:11.053 に答える