无法将资产中的JavaScript和CSS文件加载到WebView中的html中

时间:2015-11-24 18:16:15

标签: java android html webview assets

我的WebView无法呈现存储在包含脚本src(以及CSS路径)的assets文件夹中的html文件,例如

<script type="text/javascript" src="file:///android_asset/emergency.js"></script>

它显示白屏 任何想法如何解决?

我已经阅读了其他答案,但似乎没有一个适合我的情况。

以下是来自MainActivity.java的代码

    WebView browser = (WebView) this.findViewById(R.id.webView);
    String html = "file:///android_asset/file.html";

    browser.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");


    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setSupportZoom(false); 
    browser.getSettings().setBuiltInZoomControls(true);
    browser.getSettings().setDisplayZoomControls(false);

    try {
            browser.loadUrl(html);

        } catch (Exception e) {
            e.printStackTrace();
        }

2 个答案:

答案 0 :(得分:1)

如果文件位于同一位置,则html文件将自动确定文件位置。所以使用相对路径,但不是绝对。

http://www.coffeecup.com/help/articles/absolute-vs-relative-pathslinks/

答案 1 :(得分:0)

而不是:

<script type="text/javascript" src="file:///android_asset/emergency.js"></script>

只需在HTML文件中执行此操作:

<link rel="stylesheet" type="text/css" href="styles.css" />
<script type="text/javascript" src="scripts.js"></script>

因为HTML文件对您的assets文件夹一无所知 但它很容易在同一目录中找到文件。

略过这一行:

browser.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");

然后使用

browser.loadUrl("file:///android_asset/file.html");