簡體   English   中英

來自資產的 Android WebView JavaScript

[英]Android WebView JavaScript from assets

如何從資產文件夾(或任何本地資源)加載遠程 HTML 頁面上的 JavaScript 和圖像?

回答:
1. 您必須將 HTML 加載到字符串中:

private String readHtml(String remoteUrl) {
    String out = "";
    BufferedReader in = null;
    try {
        URL url = new URL(remoteUrl);
        in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            out += str;
        }
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return out;
}


2. 使用基本 URL 加載 WebView:

String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");

在這種特殊情況下,您應該將所有要在頁面上使用的 .js 文件駐留在項目的“assets”文件夾下。 例如:

/MyProject/assets/jquery.min.js


3. 在您的遠程 html 頁面中,您必須加載駐留在您的應用程序中的 .js 和 .css 文件,例如:

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

這同樣適用於所有其他本地資源,如圖像等。它們的路徑必須以

file:///android_asset/

WebView 將首先加載您以字符串形式提供的原始 HTML,然后選擇 .js、.css 和其他本地資源,然后加載遠程內容。

如果動態創建您的 HTML,然后使用 loadDataWithBaseURL,請確保您的資產文件夾中的任何本地資源(例如 javascript)在 HTML 中被稱為 file:/// (我花了幾個小時來解決這個問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM