我正在尝试在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调用函数。