私はPhonegapの情報源を探して、そのnotification.alert()
メソッドがネイティブJavaScript alert()
機能に委譲していることを確認しようとしていました。彼らのコードはありません:今すぐPhonegapとprompt()
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()
は、単純に解決:exec()
に呼び出すための関数の名前として解釈されます「警告」が、exec()
がやっているように私には見えます
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]);
};
JSON.stringify()
であるため、Phonegapコードは APIメソッドを2つのJSONオブジェクト/配列を持つprompt()
関数を呼び出して実行しています。私の前提は、prompt()
がnative JavaScript prompt() functionであるということです(JavaScriptコードでこの機能を無効にするものは見つかりませんでした)。その場合、このコードはどのように機能していますか?
は、彼らは同様に、他のさまざまな場所でprompt()
の同様の使用します(フォームgap.*:.*
の2番目のパラメータを含めることによって特異的に)彼らはprompt()
を呼び出す方法について何か特別なものであるが、
PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
ありますカスタム動作を有効にしますか?または、JavaScriptコードの外部のprompt()
関数のデフォルトの動作をどういうわけかオーバーライドしましたか?
これは、AndroidバージョンのPhonegapに特に適用されることに注意してください。他のバージョンでは、API呼び出しの実行に若干異なるメカニズムが使用されているようです。
プロンプトは文字列を返します。なにが問題ですか? – xdazz
何が問題なのは、 'prompt()'の標準バージョンがユーザにダイアログを表示することです。しかし、ここで起こっていることではありません。これらの 'prompt()'呼び出しの結果として表示されるダイアログはなく、代わりにPhonegap APIの他の部分が呼び出されます。本質的に、彼らは主なAPIエントリポイントとして 'prompt()'を使用しています、そして、私はhow/whyを知りたいと思います。 – aroth