Android WebView 在加载 html 之前注入 Javascript [英] Android WebView Inject Javascript before html loaded

查看:34
本文介绍了Android WebView 在加载 html 之前注入 Javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Android WebView 加载一些网页.我需要在所有页面加载之前插入一段 Javascript 代码.

I am using Android WebView to load some web pages. I need insert a piece of Javascript code to all the pages before they loaded.

我正在尝试将它们注入到 WebViewClient onPageStart 回调中.

I am trying to inject them on WebViewClient onPageStart callback.

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>

我希望在 HTML 之前加载我的 Js 代码.但有时 JS 代码在 HTML 之后加载.

I expected My Js code loaded before HTML. But sometimes the JS code loaded after HTML.

有什么办法可以解决我的问题吗?

Is there any way could solve my issue?

推荐答案

我遇到了同样的问题,我解决了.我在加载前隐藏 WebView 并在页面加载后显示.

I had the same problem and I solved it. I hide WebView before load and show after page loaded.

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);

这篇关于Android WebView 在加载 html 之前注入 Javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆