java - 使用 WebView.Load() 读取带有 JS 库引用的动态 HTML?

标签 java javascript android webview

我正在尝试编写一个类,该类将返回一个带有 Javascript 的 HTML 字符串,以便在 WebView 中使用。返回 HTML 和 Javascript 效果很好,但我在使用返回的 HTML 加载库时遇到问题。例如,这很有效:

public static String helloWorld() {
    String html;
    html =  "<!DOCTYPE html>" +
            "<html>" +
            "<head>" +
            "<title>" +
            "</title>" +
            "</head>" +
            "<body>" +
            "<script>" +
            "document.write(\"Hello, World\");" +
            "</script>" +
            "</body>" +
            "</html>";
    return html;
}

但是,这不会:

public static String helloWorld() {
    String html;
    html =  "<!DOCTYPE html>" +
            "<html>" +
            "<head>" +
            "<title>" +
            "</title>" +
            "<script src=\"../assets/src/external_script.js\"></script>" +
            "</head>" +
            "<body>" +
            "<script>" +
            "external_script_function();" +
            "</script>" +
            "</body>" +
            "</html>";
    return html;
}

我猜 external_script.js 导入的文件路径不正确?使用 WebView.LoadUrl(myLocalHtmlFile); 在使用其他 JS 文件时有效。我将如何着手使这项工作正常进行?或者,是否有更好的方法来实现类似的结果?

最佳答案

您需要将 Assets 文件夹作为基本 URL 提供给 WebView。像这样:

MyWebView.loadDataWithBaseURL("file:///android_asset/", helloWorld());

然后是 <script>标签会像这样:

<script src="src/external_script.js"></script>

假设库位于 assets/src 下.是的,您需要像 triad 所建议的那样启用 JavaScript。

关于java - 使用 WebView.Load() 读取带有 JS 库引用的动态 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814426/

相关文章:

java - Android:处理 Fragment 内的用户输入

javascript - 使用 cordova 的 Android Hello World 插件

java - onReceive 8.1.0 上的广播

android - 获取 ADB 的制造商供应商 ID

android - 如何调整约束布局

java - 我如何获取 Hashmap 的第二个对象

java - 使用hibernate和java进行Mysql查询时出错

javascript - 将带有随机数的 CSP header 添加到 Lambda Edge

java - 如何有条件地执行Reactor的Mono/Flux供应商操作符?

javascript - 使用 Vue.js 在不影响其他元素的情况下打开/关闭元素的类的最简单方法是什么?