を保持しつつ、文字列としてコールバック関数を渡し、私はURLでアプリにコールバック関数を渡している:のUIWebViewを使用したiPadアプリの場合はスコープチェーン
function query(db, query, callback) {
var iframe = document.createElement("IFRAME");
// Filter comments from the callback (as this would break things).
var callbackstr = "" + callback;
callbackstr = callbackstr.replace(/\/\*.+?\*\/|\/\/.*(?=[\n\r])/g, '');
// Put the query + the callback in an url that will be caught by the iOS app.
iframe.setAttribute("src", "ios-query:#iOS#" + query +":#iOS#"+ callbackstr);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}
をアプリでは、コールバック関数を解析し、 URLから取得し、stringByEvaluatingJavaScriptFromStringによって挿入されたデータでコールバック関数を呼び出します。これはすべて正常に動作しています。
はしかし、今私はそうのように、コールバック関数にクロージャを使用したい:
var callback = function (problemdata) {
// Return the 'real' callback.
return function (tx, results) {
// Do something with problemdata
}
}(problemdataFromScopeChain)
これには問題があります。コールバック関数は文字列に変換されるため、すべてのスコープチェーン情報は失われます。
この問題を解決する方法についてのご意見はありますか?
編集:私は「クエリ」関数の側で解決策を好むだろう
。例:スコープチェーン内の変数をeval()可能な文字列に変換する方法はありますか?
[iPhone WebDevグループ](https://groups.google.com/group/iphonewebdev/topics?hl=ja)で質問すると、すぐに回答が得られるかもしれません。 – RobG
良い提案、ありがとう! – TinkerTank