Android WebView在加载html之前注入Javascript

way*_*bai 11 javascript android webview

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

我试图在WebViewClient onPageStart回调上注入它们.

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");
Run Code Online (Sandbox Code Playgroud)

HTML代码:

<html>
<script>document.write(output);</script>
</html>
Run Code Online (Sandbox Code Playgroud)

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

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

sag*_*lgy 7

我有同样的问题,我解决了它。我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);
Run Code Online (Sandbox Code Playgroud)


Bha*_*gar -2

你可以尝试将你的java脚本放在html页面中然后使用android java脚本函数调用可能会有所帮助