如何使用Android webview运行依赖于其他库/模块的javascript

时间:2016-09-30 03:04:57

标签: javascript android webview

我们可以运行简单的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';

这可以实现吗?

1 个答案:

答案 0 :(得分:0)

我通过在评估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中定义的变量和函数