如果 jsCode 是:
function() {
return "test"
}
我能做到:
String js = "(" + jsCode + ") ();"
mWebView.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("return value: ", s); // Returns the value from the function
}
});
运行 javascript 代码并获取“test”作为 Java 中的值
但是如果我需要更复杂的 JavaScript 代码怎么办,例如:
function() {
return test();
}
function test() {
return "test";
}
,定义一个函数test()并调用它;
将此 javascript 代码传递给 webview 的评估Javascript 会出现错误:“Uncaught SyntaxError: Unexpected token function”,来源:(1)
最佳答案
出现这个问题的原因是这个语法无效:
(function() {
return test();
}
function test() {
return "test";
})();
这是因为括号试图将内部代码作为单个函数运行,希望您可以看到这显然不是单个函数。相反,您需要将外部函数视为内部化您需要的其他函数和变量的容器。例如,这应该有效:
(function(){
function test(){
return 'hello';
}
return test();
})();
关于javascript - 如何在Android webview中调用调用另一个javascript函数的javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761145/