我正在尝试编写一个类,它将返回一个带有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文件。我该怎么做才能正常工作?或者,是否有更好的方法来获得类似的结果?
答案 0 :(得分:1)
您需要将assets文件夹作为基本URL提供给WebView。像这样:
MyWebView.loadDataWithBaseURL("file:///android_asset/", helloWorld());
然后<script>
标记会像这样:
<script src="src/external_script.js"></script>
假设图书馆位于assets/src
下。是的,你需要启用像triad建议的JavaScript。
答案 1 :(得分:0)
由于您编写资产,我认为您正在尝试加载放在Eclipse中的文件或您使用的与您的应用程序捆绑在一起的IDE。这会存储在您的APK和AFAIK中,但不会“解压缩”到您应用的工作目录中。
这意味着你必须手动将它放在SD卡或内部存储器上,或者在内部加载它并在将它发送到WebView之前将其动态注入最终的HTML中。
就个人而言,我会选择第二种方法,因为它确实可以减少混乱。