如何在Javascript接口中将函数作为参数传递,将其另存为字符串然后调用?

例如,我描述Javascript Interface

class JSInterface{
  String myFunction;

  //set function into myFunction attribute
  @JavascriptInterface
  public void setMyFunction(String func) {
    this.myFunction = func;
  }

  @JavascriptInterface
  public void executeMyFunction() {
    webView.loadUrl("javascript:"+this.myFunction);
  }

}


添加:

//...

webview..addJavascriptInterface(new JSInterface, "application");

//...


JS中:

window.application.setMyFunction(function(){
        //some code here...
});


注意:来自JS的传递函数需要采用这种形式,而不是字符串或json。

但实际上,在setMyFunction中,我得到了"undefined",但期望"window.application.setMyFunction(function(){ //some code here...});"。告诉我该怎么办,我将不胜感激!

最佳答案

试试这个:

Convert Javascript Object (incl. functions) to String

然后将函数调用附加到字符串:

function(){
..
}()


并在该字符串上调用eval()

10-07 19:18
查看更多