我正在使用WEBVIEW
从我的应用程序中显示我的网页。
我的网页是服务器上的简单HTML
文件,因此要显示我的网站,应用程序需要下载此HTML
页面,但无需下载其他文件,例如{ {1}},CSS
等,因为这些文件位于JavaScript
。
我的应用程序可以轻松地将assets folder
文件注入网页,但无法运行所有CSS
个文件。有时我的应用程序运行所有JavaScript
个文件,但有时只能运行一半JavaScript
个文件。
为什么不运行所有JS
个文件? (我一遍又一遍地打开和关闭应用程序以强制它运行所有JS
个文件!)
[告诉我,如果你需要更多代码]
我使用API 18.
我使用这些代码注入JavaScript
和JS
:
CSS
private void injectjs() {
try {
InputStream inputStream = getAssets().open("jscript.js");
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
webView.loadUrl("javascript:(function() {" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var script = document.createElement('script');" +
"script.type = 'text/javascript';" +
"script.innerHTML = window.atob('" + encoded + "');" +
"parent.appendChild(script)" +
"})()");
} catch (Exception e) {
e.printStackTrace();
}
}
我在互联网上的HTML文件:
private void injectCSS() {
try {
InputStream inputStream = getAssets().open("style.css");
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
webView.loadUrl("javascript:(function() {" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var style = document.createElement('style');" +
"style.type = 'text/css';" +
"style.innerHTML = window.atob('" + encoded + "');" +
"parent.appendChild(style)" +
"})()");
} catch (Exception e) {
e.printStackTrace();
}
}