![](/img/trans.png)
[英]Android WebView: Using relative paths when loading javascript from assets
[英]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.