Порядок кнопок в navigator.notification.confirm в рамках PhoneGap

Я использую следующий фрагмент кода в приложении PhoneGap.

        function registrationCallBack(button){
            if(button == 2) {
                window.location.href = "login.html";
            }
        }

   navigator.notification.confirm("Are you sure ?", registrationCallBack, "Confirmation", "Cancel, Ok");

Порядок кнопок в iPhone выглядит как "Отмена" и "ОК". Но для Android порядок кнопок в обратном порядке. Это идет как "ОК", а затем "Отмена".

В результате индексы кнопок изменяются в методе обратного вызова.

Снимок экрана iPhoneСкриншот Android

Все предложения приветствуются:)

Спасибо,

4 ответа

Это не проблема. Все, что вы получаете, является собственным поведением соответствующей платформы. В iOS кнопка "Отмена" появится слева, а в Android - справа. Если проблема заключается только в индексе кнопки, то вы можете справиться с этим в своем коде. Но вы не можете изменить последовательность кнопок на экране.

Попробуйте использовать следующие решения:

function showConfirm(message, callback, buttonLabels, title){

    //Set default values if not specified by the user.
    buttonLabels = buttonLabels || 'OK,Cancel';

    title = title || "default title";

    //Use Cordova version of the confirm box if possible.
    if(navigator.notification && navigator.notification.confirm){

            var _callback = function(index){
                if(callback){
                    callback(index == 1);
                }
            };

            navigator.notification.confirm(
                message,      // message
                _callback,    // callback
                title,        // title
                buttonLabels  // buttonName
            );

    //Default to the usual JS confirm method.
    }else{
        invoke(callback, confirm(message));
    }
}

А вот как вы бы это использовали:

var message = "Would you like to proceed?";
var title = "Important Question";

//The first element of this list is the label for positive 
//confirmation i.e. Yes, OK, Proceed.
var buttonLabels = "Yes,No";

var callback = function(yes){
    if(yes){
        alert('Proceed');
    }else{
        alert('Do Not Proceed'); 
    }
};

showConfirm(message, callback, buttonLabels, title);

Я не пробовал это в iphone. Но попробовал это в Android. Я не сталкивался с такими проблемами с PhoneGap 1.4.1. Поэтому я предлагаю вам обновить версию телефонного промежутка. Проблема, с которой вы столкнулись, может быть исправлена ​​в их новой версии.:)

Я немного опоздал, но у меня была та же проблема, однако я изменил их так, что "Отмена" идет там, где "ОК", а "ОК" - там, где "Отмена". Это сработало для меня.

Другие вопросы по тегам