jQuery ориентация мобильного замка - PullRequest
3 голосов
/ 10 августа 2011

Эй, ребята, я использую PhoneGap и JQuery Mobile для создания приложения для телефона Android.Есть ли возможность заблокировать ориентацию на одной странице?Например, страница «карта» загружена, а ориентация заблокирована в режиме «ландшафт».

Ответы [ 2 ]

8 голосов
/ 20 августа 2012

Я попытался изменить manifest.xml, и он работает. Просто добавьте атрибут android: screenOrientation = "landscape" в тег активности, как показано ниже:

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
    <activity android:label="@string/app_name" android:name=".Phonegap_AppName"
        android:configChanges="orientation|keyboardHidden" android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
5 голосов
/ 10 августа 2011

Не совсем, я думаю. В приложениях xCode для iOS это невозможно. Единственное исправление, которое я могу придумать, - это повернуть тело или обёртку в соответствии с window.orientation

$(window).bind("orientationchange", function(){
    var orientation = window.orientation;
    var new_orientation = (orientation) ? 0 : 180 + orientation;
    $('body').css({
        "-webkit-transform": "rotate(" + new_orientation + "deg)"
    });
});

Это рискованный путь, но он думает, что это единственный путь.

Надеюсь, это поможет, пожалуйста, дайте мне знать!

См .: http://jsfiddle.net/aalouv/sABRQ/1/


Альтернативно вы можете привязать к событию изменения размера окна.

$(window).bind("resize", function(){
    var orientation = window.orientation;
    var new_orientation = (orientation) ? 0 : 180 + orientation;
    $('body').css({
        "-webkit-transform": "rotate(" + new_orientation + "deg)"
    });
});

Некоторое время назад я написал этот небольшой скрипт: он исправляет ошибку обратного вызова при многократном изменении размера в iOS-сафари и ошибку неориентирования / позднего / раннего запуска (1) в Android.

(1) Иногда это не срабатывает иногда до, а иногда после того, как браузер меняет ширину + высоту? Проводные!

if (!(/iphone|ipad/gi).test(navigator.appVersion)) {
    $(window).unbind("resize").bind("resize", function() {
        $(window).trigger("orientationchange");
    });
}

Если вы не iphone или ipad, вы запускаете событие directionalchange в окне.

Так что, когда вы будете связывать какую-либо функцию, вы изменяете ее размер, выбрасывая ориентацию.

...