我正在尝试在Android WebView上执行任意Javascript函数并获取其结果。为了调用该函数,我使用loadUrl(),并且还添加了一个Javascript接口,该接口应与结果一起调用。这是我试图从loadUrl()执行的JS外观:

(function () {
  var res = eval(foo());
  MyInterface.setResult(res);
})()


foo代表我尝试调用的函数的名称,MyInterface是我之前添加的接口。当我这样做时,foo()会被调用,但下一个调用不会。我尝试将MyInterface.setResult(res);更改为更简单的JS语句(例如console.log("finished")),但是在eval()之后什么也不执行。如果删除eval,则执行下一条语句。有什么想法吗?

最佳答案

eval需要一个字符串。它正在尝试调用foo返回的字符串。

尝试eval(“ foo()”);

编辑:您也可以不带eval调用函数。

10-07 19:17
查看更多