我正在尝试在Android WebView上执行任意Javascript函数并获取其结果。要调用该函数,我使用loadUrl(),我还添加了一个应该用结果调用的Javascript接口。这就是JS我试图从loadUrl()执行的内容:
(function () {
var res = eval(foo());
MyInterface.setResult(res);
})()
foo
代表我试图调用的函数的名称,MyInterface
是我之前添加的接口。当我这样做时,foo()
会被调用但下一次调用不会被调用。我尝试将MyInterface.setResult(res);
更改为更简单的JS语句,例如console.log("finished")
,但在eval()
之后没有执行任何操作。如果我删除eval
,则执行下一个语句。关于这里发生了什么的任何想法?
答案 0 :(得分:2)
eval需要一个字符串。它正在尝试调用字符串foo返回。
尝试eval(“foo()”);
编辑:您也可以在没有eval的情况下调用该函数。