javascript - 如何在Android webview中调用调用另一个javascript函数的javascript函数

标签 javascript android webview

如果 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();
})();

这些包装容器称为 Immediately invoked function expressions

关于javascript - 如何在Android webview中调用调用另一个javascript函数的javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761145/

相关文章:

javascript - JavaScript 中的异步行为

javascript - Json 内部的数组

android - 如何在 Android 中创建自定义 webview?

java - 无法从 webview android 中从 Javascript 调用的 Java 方法获取数据

java - 改造 Android 从 REST API 获取日期无法正常工作

java - Android Webview 应用程序上下文

c# - ScriptManager.RegisterStartupScript 在事件(按钮、GridView 等)内失败

javascript - 简单的 JavaScript Chrome 扩展 - 打开 URL - 从输入文本修改

android - 单击时从列表中获取单个整数

android - 背景在android 4.2.2没有出现,但是出现在2.3