js内の任意の機能オブジェクトをJava側に渡すことができるため、Javaがそのjsオブジェクトを呼び出すことはできますか? (コールバック)jsコールバック関数をパラメータとしてJava addJavascriptInterfaceに渡す
例えば、(アクセスはすでにJava関数を呼び出すために登録された関数である)
access(function(blabla){
...
});
Javaで匿名コールバック関数を扱うことができるすべての偉大な技術はありますか?
js内の任意の機能オブジェクトをJava側に渡すことができるため、Javaがそのjsオブジェクトを呼び出すことはできますか? (コールバック)jsコールバック関数をパラメータとしてJava addJavascriptInterfaceに渡す
例えば、(アクセスはすでにJava関数を呼び出すために登録された関数である)
access(function(blabla){
...
});
Javaで匿名コールバック関数を扱うことができるすべての偉大な技術はありますか?
個々のコールバック無名関数を参照するには、ちょっとしたキーが必要です。私はこれがjsonpが時々使用される方法だと思います。
Javascriptを:
var callbacks = [];
function registerCallback(callback)
{
callbacks.push(callback);
return callbacks.length - 1;
}
function getCallback(index)
{
var callback = callbacks[index];
callbacks[index] = null;
TryGCCallbacks();
return callbacks;
}
//The array index positions must be preserved, but when it's empty, we should restart the array so it doesn't grow forever
function TryGCCallbacks()
{
var isCallbackRemaining = false;
for (var i = 0; i < callbacks.length; i++)
{
if (callbacks[i] == null) {
continue;
}
isCallbackRemaining = true;
break;
}
if (isCallbackRemaining == false)
{
callbacks = []; //reset
}
}
ジャワ:JavaScriptからこれを使用する
@org.xwalk.core.JavascriptInterface
public String TestCallback(String someData, String onSuccess, String onError){
xwalk.evaluateJavascript("getCallback(" + onSuccess + ")('success');", null);
}
:
var onSuccess = registerCallback(function(r) {
console.log(r);
});
TestCallback('lalala', onSuccess, null);
これは何とかXWalkに組み込むべきものです。これはとても便利です。 – Todd
のJava:xwalk.post(新しいRunnableを(){@Override ます。public void実行(){ xwalk.evaluateJavascript( "(関数(){AndroidStatic.callBack(" + "\"」+結果+ "\" "+");})(); "、null); } }); – cho
Javascript:var AndroidStatic = { コールバック:関数(結果){ //アラート(結果); console.log(結果); } }; – cho
'var'を渡すことはできません。プリミティブ型を確認する –
何を意味するのか、@NikolaDespotoski?いくつかのバイパススタイルはありますか? –
代わりに任意のvarオブジェクトを返す代わりに、JSON文字列を使ってデータを渡そうとしています.... –