我们可以运行简单的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';
这可以实现吗?
答案 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中定义的变量和函数