我的要求:
我有什么选择?
答案 0 :(得分:0)
SFWebView我认为在iOS中也支持Javascript。
不确定您是否可以在后台线程中使用它,因为Android Webview只能在UI线程上运行
答案 1 :(得分:0)
答案: 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;
}
使用基本URL加载WebView:
String html = readHtml("Your Web URL");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
在这种特殊情况下,您应该将要在页面上使用的所有.js文件驻留在" assets"项目文件夹。例如:
/MyProject/assets/jquery.min.js
在远程html页面中,您必须加载驻留在应用程序中的.js和.css文件,如:
同样适用于所有其他本地资源,如图像等,其路径必须以
开头file:///android_asset/
WebView首先加载您提供的原始HTML作为字符串,然后选择.js,.css和其他本地资源,然后加载远程内容。
答案 2 :(得分:0)
在android中,将页面加载到webview中。拦截脚本调用。
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if ( url.endsWith("script.js") ) {
AssetFileDescriptor fileDescriptor = assetManager.openFd("script.js");
FileInputStream stream = fileDescriptor.createInputStream();
return new WebResourceResponse("text/javascript","UTF-8",stream);
}
}
Webview在ui线程上运行。我不确定是否有办法从后台线程加载webresources。