java - 如何在 Javascript 接口(interface)中将 Javascript 函数作为参数传递?

标签 java javascript android android-jsinterface

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

例如,我描述了 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()

关于java - 如何在 Javascript 接口(interface)中将 Javascript 函数作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212988/

相关文章:

java - 警报管理器未触发服务

java - Jersey - ClassNotFoundException org.glassfish.jersey.servlet.ServletContainer

java - Google App Engine Java 是否支持 Eclipse 中的热部署?

javascript - 如何监视 Jasmine 中的嵌套方法?

javascript - 在 Mozilla 中未调用 Div onclick 事件

java - 按字母顺序更新 RecyclerView 项目

java - 在tomcat中的java方法中访问JavaScript文件

javascript - 编写 Atom 编辑器插件,动画语法着色

android - 查看 Android 应用的共享偏好设置?

Android navArgs 背面清晰