首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Phonegap和prompt()

Phonegap和prompt()
EN

Stack Overflow用户
提问于 2011-08-31 09:09:03
回答 2查看 6.1K关注 0票数 9

我查看了安卓的Phonegap源代码,并试图验证他们的notification.alert()方法是否只是委托给原生的JavaScript alert()函数。他们的代码做到了:

代码语言:javascript
运行
复制
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]);
};

在我看来,"alert“将被解释为要在exec()中调用的函数的名称,但exec()正在执行以下操作:

代码语言:javascript
运行
复制
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(),因此Phonegap代码通过使用两个notification.alert()对象/数组调用prompt()函数来执行JSON方法。我假设prompt()就是native JavaScript prompt() function (我还没有在他们的JavaScript代码中发现会覆盖这个函数的任何东西)。如果是这样,那么这段代码是如何工作的呢?

它们在其他不同的地方也使用类似的prompt()

代码语言:javascript
运行
复制
PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:"); 

它们调用prompt()的方式是否有什么特殊之处(特别是通过包含表单gap.*:.*的第二个参数)来启用某些自定义行为?或者,它们是否以某种方式覆盖了JavaScript代码外部的prompt()函数的默认行为?

请注意,这特别适用于Phonegap的Android版本,因为其他版本似乎使用略有不同的机制来执行API调用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-31 14:17:31

prompt()函数已被重写。

您可以在DroidGap.java中找到它。

代码语言:javascript
运行
复制
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
......
}
票数 7
EN

Stack Overflow用户

发布于 2011-08-31 20:25:49

在Android2.3中,JavaScript to Java bridge在模拟器上停止工作。一位聪明的PhoneGap贡献者发现,依靠prompt是一种变通办法。

这是Android issue

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7251557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档