如何使用Android webview运行依赖于另一个库/模块的javascript

How to use Android webview to run javascript that depends on another library/module

本文关键字:模块 javascript 另一个 依赖于 何使用 Android webview 运行      更新时间:2023-09-26

我们可以运行简单的javascript函数(jsCode),如:

function() {
   return "test"
}
在webview:

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依赖于另一个模块或引用另一个文件,如:

import { double } from 'mymodule';

这能实现吗?

我通过在评估jsCode

之前评估外部javascript文件来实现这一点
private String[] jsFiles = {"external_lib.js", "main.js"};
private void evaluateJS() {
        try {
            String js = readFromAssets(jsFiles[fileIndex]);
            Log.e(TAG, "evaluating: " + jsFiles[fileIndex]);
            mWebView.evaluateJavascript(js, new ValueCallback<String>() {
                @Override
                public void onReceiveValue(String s) {
                    fileIndex++;
                    if (fileIndex == jsFiles.length) {
                        // we have evaluated the last javascript file
                        Log.e("return value: ", s); // Returns the value from the function
                        return;
                    }
                    evaluateJS();
                }
            });
        } catch (Exception e) {
            Log.e(TAG, e.toString());
        }
    }

main.js中的代码使用external_lib.js中定义的变量和函数