나는 안드로이드 소스 인 Phonegap을보고 있는데 notification.alert()
메서드가 기본 JavaScript alert()
함수에 위임한다는 것을 확인하려고합니다. "경고"와 같은 나에게 보이는Phonegap and prompt()
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()
이므로 Phonegap 코드는 두 개의 JSON 객체/배열이있는 prompt()
함수를 호출하여 notification.alert()
API 메소드를 실행합니다. 내 가정은 prompt()
이 native JavaScript prompt() function (이 함수를 재정의하는 JavaScript 코드에서 아무 것도 찾지 못했습니다)입니다. 그렇다면이 코드는 어떻게 작동합니까?
그들은뿐만 아니라, 다양한 장소에서 prompt()
의 유사한 사용합니다 (양식 gap.*:.*
의 두 번째 매개 변수를 포함하여 구체적으로) 그들이 prompt()
를 호출하는 방법에 대한 특별한 뭔가가
PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
있는가 사용자 정의 동작을 활성화합니까? 아니면 어떻게 든 JavaScript 코드 외부의 prompt()
함수의 기본 동작을 재정의 했습니까?
다른 버전은 API 호출을 실행하기 위해 약간 다른 메커니즘을 사용하는 것처럼 보이기 때문에 이는 Android 버전의 Phonegap에만 적용됩니다.
프롬프트는 문자열을 반환합니다. 뭐가 잘못 되었 니? – xdazz
잘못된 점은'prompt()'의 표준 버전이 사용자에게 대화 상자를 표시한다는 것입니다. 그러나 그것은 여기서 일어나는 것이 아닙니다. 이'prompt()'호출의 결과로 대화 상자가 표시되지 않고 대신 Phonegap API의 다른 부분이 호출됩니다. 본질적으로, 그들은 그들의 주요 API 진입 점으로'prompt()'를 사용하고 있으며 어떻게/왜 알고 싶습니다. – aroth