Phonegap and prompt ()

Я просматривал Phonegap исходники для Androi d и пытается убедиться, что их метод notification.alert () просто делегирует встроенную функцию JavaScript alert () . Их код делает:

Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
    var _title = (title || "Alert");
    var _buttonLabel = (buttonLabel || "OK");
    PhoneGap.exec(completeCallback, null, "Notification", "alert", [message,_title,_buttonLabel]);
};

Что мне кажется «предупреждение», будет интерпретироваться как имя функции, вызываемой в exec () , но exec () выполняет:

PhoneGap.exec = function(success, fail, service, action, args) {
    try {
        var callbackId = service + PhoneGap.callbackId++;
        if (success || fail) {
            PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
        }

        //using:  ["Notification", "alert", callbackId, true]
        var r = prompt(PhoneGap.stringify(args), 
                       "gap:"+PhoneGap.stringify([service, action, callbackId, true]));

        //...
    } catch (e2) {
        console.log("Error: "+e2);
    }
}; 

Сейчас PhoneGap.stringify () просто преобразуется в JSON.stringify () , поэтому код телефонной связи выполняет метод API notification.alert () , вызывая приглашение () функция с двумя объектами / массивами JSON. Я предполагаю, что prompt () - это встроенная функция JavaScript prompt () (я не нашел ничего в их коде JavaScript, которое могло бы переопределить эту функцию). Если это так, то как работает этот код?

Они аналогичным образом используют prompt () в различных других местах:

PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:"); 

Есть ли что-то особенное в том, как они вызывают prompt () (в частности, с помощью включая второй параметр формы пробел. *:. * ), который включает какое-то настраиваемое поведение? Или они каким-то образом переопределили поведение по умолчанию функции prompt () где-то вне их кода JavaScript?

Обратите внимание, что это относится конкретно к версии Phonegap для Android, поскольку другие версии, похоже, используют немного другие механизмы выполнения вызовов API.

9
задан aroth 31 August 2011 в 01:09
поделиться