【发布时间】:2017-07-17 06:05:57
【问题描述】:
我仅在将 CSS 文件注入 HTML 后才尝试显示我的 webview。 我曾尝试将其放在 onPageCommitVisible 函数上,但它仅适用于以上 23 个 api 和 d。有人知道只有在 CSS 完成加载后我才能显示 webview 吗?现在它“跳跃”了,在替换新 CSS 之前,我会在第一秒看到原始 CSS。
@Override
public void onPageFinished(WebView view, String url) {
Utils.logDebug(this, "Page finished");
if (android.os.Build.VERSION.SDK_INT < 23) {
injectCSS(view);
}
super.onPageFinished(view, url);
showWebView(true);
onPageChange();
}
这是我的 InjestCSS 函数:
private void injectCSS(WebView webView) {
try {
webView.loadUrl("javascript:(function() {" +
"var css = document.createElement(\"style\");\n" +
"css.type = \"text/css\";\n" +
"css.innerHTML = \"" + readFileAsString() + "\";\n" +
"document.body.appendChild(css);" +
"})()");
} catch (Exception e) {
e.printStackTrace();
}
}
此函数将 CSS 代码注入 HTML,如您在函数中所见。
【问题讨论】:
-
你的
injectCSS在做什么? -
@j2ko 刚刚更新了我的问题。