我正在使用 Android WebView 加载一些网页。我需要在所有页面加载之前插入一段 Javascript 代码。
我正在尝试在 WebViewClient onPageStart 回调中注入(inject)它们。
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loadUrl("javascript:var output='test string';");
}
})
mWebView.loadUrl("xxx.html");
HTML代码:
<html>
<script>document.write(output);</script>
</html>
我希望我的 Js 代码在 HTML 之前加载。但有时 JS 代码在 HTML 之后加载。
有什么办法可以解决我的问题吗?
最佳答案
我遇到了同样的问题,我已经解决了。我在加载前隐藏 WebView
并在页面加载后显示。
webView.getSettings().setJavaScriptEnabled(true);
b.webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
b.webView.evaluateJavascript("javascript:window.document.getElementsByTagName('body')[0].style.color='white';", null);
}
else
{
b.webView.loadUrl("javascript:window.document.getElementsByTagName('body')[0].style.color='white';");
}
b.webView.setVisibility(View.VISIBLE);
}
});
b.webView.setVisibility(View.INVISIBLE);
b.webView.loadUrl(PreferenceHelper.EULA_URL);
关于javascript - Android WebView 在加载 html 之前注入(inject) Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064589/