Как изменить эффект перехода на основе версии Android? - PullRequest
1 голос
/ 02 сентября 2011

в соответствии с jquerymobile переходы страниц документы эффект переворота поддерживается только в последней версии Android, как я могу сделать следующую кнопку:

<a href="#ngame" data-role="button" data-transition="flip" data-rel="dialog">New game</a>

использовать эффект «переворачивать» только в Android 2.3.4+ и «затухать» в предыдущих версиях?

Я использую в своем проекте phonegap, если это поможет.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Шаг первый: получить версию устройства из API телефонного промежутка (http://docs.phonegap.com/phonegap_device_device.md.html#device.version).

). Шаг второй - преобразовать это число в целое или число с плавающей точкой и использовать его, чтобы решить, следует лиизмените dom:

var android_version = parseFloat(device.version);
if (android_version < 2.3) {
    $.each($('[data-transition="flip"]'), function (index, value) {
        $(value).attr('data-transition', 'fade');
    });
}

Вы захотите запустить его после того, как событие deviceready сработает, так как переменная device.version не будет готова до тех пор. Кроме того, эффект переворота будет работать в более ранней версиив ОС Android она выглядит просто неуклюже, поскольку все, что она делает, вращает страницу, как будто она вращает колесо, а не трехмерное отражение.

-> Примечание. Номер версии ОС Android также можно получить ввеб-приложение, проверив строку navigator.userAgent. Я нашел ниже регулярное выражение из другого вопроса Stackoverflow: Получить версию ОС Android от user-agent

[;(\s]Android (\d+(?:\.\d+)+)[;)], сопоставленной со строкой navigator.userAgentдает мне следующий вывод:

Android 2.3.3;,2.3.3
0 голосов
/ 17 апреля 2012

Мне интересно, действительно ли Джаспер или Нельсон попробовали решение Джаспера.У меня была та же проблема сегодня, и у меня все еще есть, потому что я столкнулся с этой фундаментальной проблемой:

  1. Вы можете только динамически установить атрибут data-transition в событии mobileinit, потому что (каккажется) как только jQueryMobile наберет все ваши страницы, вы можете изменить атрибут data-transition, сколько захотите, но он не будет иметь никакого эффекта.

  2. Установка атрибутов имеет смысл только один развсе элементы были загружены, поэтому вам нужно связать с $ (document) .ready (), но это событие запускается далеко после mobileinit.

Так что с этими двумя проблемами на месте, естьПохоже, что решение невозможно, кроме как взломать код jQueryMobile.Или я что-то упустил?

...